ブランチ関連の用語がまぎらわしくてわかりにくいことがあるのでメモ。
ローカルブランチ
- ローカルリポジトリのブランチ
- refs/heads/* (refs/heads/master とか)
- git commit/merge とかで更新される
追跡ブランチ
- ローカルブランチのうち config で次の設定があるもの
branch.<local-branch>.remote
branch.<local-branch>.merge
- 主に次のようなコマンドで設定される
git branch <local-branch> <remote-branch>
git checkout -t <remote-branch>
git push -u <remote-repository> <local-branch>:<branch of remote-repository>
- このブランチ上で push や pull すると自動的にプッシュ先やプル元となるリモートリポジトリのブランチが選択される(こともある)
リモートブランチ
- ローカルリポジトリにある、リモートリポジトリ上のローカルブランチのコピー
- refs/remotes/* (refs/remotes/origin/master とか)
- config の次の設定によってマッピングが決められる
remote.<remote-repository>.fetch
- git fetch/pull/push とかで更新される
- fetch/pull はリモートリポジトリのローカルブランチを取得して、ローカルリポジトリのリモートブランチを更新する
- push はローカルリポジトリのリモートブランチと、リモートリポジトリのローカルブランチを更新する
- 直接のチェックアウトはできない
- やると HEAD がブランチから外れる
- リモート追跡ブランチ(remote-tracking branch) と呼ばれることもある
- どちらかといえば リモート追跡ブランチ の方が正しい気がする
- git の man だと remote-tracking branch が多い
- どちらかといえば リモート追跡ブランチ の方が正しい気がする
まぎらわしいのがこの辺り・・・
- リモートブランチ != リモートリポジトリのローカルブランチ
- 追跡ブランチ != リモート追跡ブランチ
- ローカルリポジトリ contains 追跡ブランチ
参考 ... Git - リモートブランチ