目的
リモート追跡ブランチと上流ブランチをそろそろ理解したい。
基本のおさらい
・git fetch: リモートブランチの内容をローカルリポジトリのリモート追跡ブランチへ反映する
・git merge: ローカルリポジトリ内でリモート追跡ブランチの内容をローカルブランチへ反映する
・git pull: git fetchとgit mergeをまとめて行う。
・git push: ローカルブランチの内容をリモートブランチとリモート追跡ブランチへ反映する。
↓過去にまとめた記事があるので、よろしければ見てください..!!
第1回目 git基礎コマンド (https://qiita.com/tatsuya_1995/items/b0747759630b6c230684)
第2回目 ブランチ・マージ・リベース・コンフリクト(https://qiita.com/tatsuya_1995/items/04148896a7f23a1f2090)
第3回目 プルリクエスト (https://qiita.com/tatsuya_1995/items/6d48b7ba8487fe38bbf8)
リモート追跡ブランチ
<ポイント>
- ローカルリポジトリにあって、他のリポジトリの内容を追跡しているブランチである
-
origin/masterはリモートリポジトリoriginのmasterブランチを追っているリモート追跡ブランチである
上流ブランチ
<ポイント>
- 引数なしで
git pullしたときに対象になるブランチである - ローカルリポジトリの
masterブランチからgit pullするとorigin/masterの変更を反映する。 -
origin/masterはローカルリポジトリのmasterの上流ブランチである。
...ここで上流ブランチを普段意識していない人は少し引っかかりませんか?
git pullしたときは、単純にリモートブランチからローカルブランチへ変更を反映しているんじゃないの?って。
正確にはリモートブランチからリモート追跡ブランチ(origin/master)へ反映された後に、そのリモート追跡ブランチからローカルブランチへ反映されている。 という流れです..!!
なので、より正確な解釈を促すのであればgit pulllの動きを表す図はこちらなのではないかなと思っています。赤バツと青丸で表しています。
おまけ
- リモート追跡ブランチの一覧は
git branch -rコマンドで確認可能

