目的
Gitを理解して使いこなせるようになること
達成度の目安
- 何に使うかわかる
- (個人的に)使える
- 分かる
- 教えられる
- 展開できる
- 問題解決できる
習得方法
1つ目 『サルGit』で学ぶ
有名なGit解説のページ: サル先生のGit入門
もちろん入門編から
2020.8.30
インストールしてるGitのバーション: 2.17.1
主に使用しているPCのOS: Ubuntu 18.04.5 LTS
<<何に使うか分かる>>
- ファイルのバージョン管理を簡単に効率よく行うために使う。
- 複数人で編集しているときも間違いが起きにくい
- 古いファイルを保存するのではなく、履歴を残す
- ファイルの管理をする場所がリポジトリ
- ローカルPC上には作業用のローカルレポジトリ、サーバー上には共有用のリモートレポジトリ
- コミット(commit)すると変更点が保存される
- 作業フォルダがワークツリー、コミット準備用フォルダがインデックス。
- プッシュ(push)するとリモートレポジトリで共有できる
- クローン(clone)するとリモートリポジトリをコピーしたローカルレポジトリを作れる
- プル(pull)するとリモートレポジトリの最新の更新履歴をダウンロードできる
- 他の変更履歴がある場合はマージ(merge)しないとプッシュできない
- マージすると、Gitが自動的に変更箇所を統合する
- 自動的に統合できなかった箇所はコンフリクト(conflict)になる -同じ部分を変更してるときとか
<<(個人的に)使える>>
- インストールする
- 設定ファイルの操作 (細かい設定は後で)
- 新しいリポジトリの作成 ローカルレポジトリはフォルダを作って、コンソールで
git init
-
git status
でディレクトリの状態確認 -
git add <ファイル名>
でファイルをインデックスに登録 -
git commit -m <コメント>
でコミットする - サルGitではBacklogでリモートレポジトリを作成しているけど、GitHubで作った。
-
git remote add <リモートレポジトリの名前> <リモートレポジトリのURL>
でリモートレポジトリを登録 - プッシュやプルの実行時にリモートレポジトリの名前を省略するとoriginが指定されるので、特別事情がなければリモートレポジトリの名前はoriginにする
-
git push <指定するリモートレポジトリ> <ブランチ>
でpush。ブランチについては後で。 -
git clone <リモートレポジトリのURL> <複製に使うディレクトリ名>
でリモートレポジトリをローカルにクローン - 競合の解決: プルして、競合部分を編集して、プッシュする
次は発展編
<<何に使うか分かる>>
- ブランチ(branch)で変更を分岐させる <作業毎、目的毎、人毎> -無駄な競合を避けられる
- ブランチの運用 『統合ブランチ』とトピックブランチ
- ブランチを移動するとときはチェックアウト(Checkout)
- 現在のブランチの先頭がヘッド(Head)
- 変更内容の一時退避(Stash)
- ブランチを統合するときはマージ(merge)とリベース(rebase)を使い分ける
- ブランチの運用が大事! A successful Git branching model
- リベースで統合するときは統合元にcheckout
- リベースしたらmergeしてfast-forward
- リモートレポジトリからプルしたときに、プルしてくるローカルのブランチに変更がなければfast-forwardになる
- リモートレポジトリからプルしたときに、変更がローカルのブランチのほうが進んでいるとマージ(競合があれば解消必要)
- リモートレポジトリの変更内容確認するだけのときはプルせずにフェッチ(fetch)する
- フェッチで確認した内容をローカルに取り込むときは改めてプルする
- リモートレポジトリにプッシュするときはfast-forwardでマージされなければならない (プルしとけってことかな?)
<<(個人的に)使える>>
- ブランチを作るときは
git branch <ブランチ名>
- ブランチを乗り換えるときは
git checkout <ブランチ名>
- ```git checkout -b <ブランチ名>``でブランチの作成とチェックアウトが一発でできる
- マージするときは取り込み側のブランチにいること
git merge <取り込みたいブランチ>
-
git branch -d <削除するブランチ>
-d オプションでブランチを削除 -
git rebase master
で支流をマスターにリベース 支流にチェックアウトしておくこと!! - リベースできたら、マスターにチェックアウトしてからリベースした支流をマージ(fast-forward)