1. リモート追跡ブランチ、上流ブランチ
- リモート追跡ブランチ(remote-tracking branch)
- リモートブランチの状態を追跡するブランチ
- ローカルリポジトリに存在する(実体は
.git/refs/remotes/
)
- 上流ブランチ(upstream branch)
- デフォルトでマージの対象となるブランチ(引数なしで
git merge
した時にマージされるブランチ) - mainブランチの上流ブランチがorigin/mainブランチである場合、「mainブランチはorigin/mainブランチを追跡している」と言う
- デフォルトでマージの対象となるブランチ(引数なしで
2. fetch、merge、(pull)
- fetch:リモートリポジトリのmainブランチをローカルリポジトリのorigin/mainブランチに反映
- merge:ローカルリポジトリのorigin/mainブランチをローカルリポジトリのmainブランチにマージ
- pull = fetch + merge
git pull origin main
=git fetch origin
+git merge origin/main
3. 関連コマンド
3-1. 上流ブランチの設定
上流ブランチの設定(git-branch -u)
git branch -u <リモート追跡ブランチ> <ローカルブランチ> # git branch -u origin/main main
push時に上流ブランチを設定(git-push -u)
git push -u origin main
# mainブランチの上流ブランチにorigin/mainブランチが設定される
上流ブランチの設定を解除(git-branch --unset-upstream)
git branch --unset-upstream <ローカルブランチ> # git branch --unset-upstream main
3-2. ブランチの確認
ローカルブランチとリモート追跡ブランチの表示(git-branch -a)
git branch -a
リモート追跡ブランチの表示(git-branch -r)
git branch -r
上流ブランチの確認(git-branch -vv)(git-status)
git branch -vv
# 詳細
git status -bs
# シンプル
ローカルブランチとリモート追跡ブランチとの差分を表示(git-diff)
git diff <ローカルブランチ> <リモート追跡ブランチ> # git diff main origin/main
3-3. リモート追跡ブランチの削除
指定して削除(git-branch -r)
git branch -d -r <リモート追跡ブランチ> # git branch -d -r origin/main
一斉に削除(git-fetch --prune)(git-remote prune)
git fetch --prune
git remote prune <リポジトリ名> # git remote prune origin
【参考】
- Git Branching - Remote Branches
- Git で「追跡ブランチ」って言うのやめましょう
- Delete remote-tracking branches in Git
- 第17話 ローカルリポジトリに残ってしまうリモート追跡ブランチを一気に削除する prune オプション
- git fetchの理解からgit mergeとpullの役割
- 【初心者向け】git fetch、git merge、git pullの違いについて
- git: fetch and merge, don't pull | Mark's Blog
- Git Fetch | Atlassian Git Tutorial
- git fetchとブランチ取り込み系コマンドの引数を省略すると?