あまブログ

ドキドキ......ドキドキ2択クイ〜〜〜〜〜〜〜ズ!!

【Git】リモート追跡ブランチと上流ブランチを理解する【fetch・merge】

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

【参考】