Git のトラッキングブランチ(追跡ブランチ)っていったいなんなのよ、って話。
トラッキングブランチは有効か無効か?
まずはトラッキングブランチが「有効な場合(左)」と「有効で無い場合(右)」の git pull コマンドのアウトプットを眺めてみよう。
有効な場合(左)はGitが察してくれて、ちゃんと pull してくれる。
有効で無い場合(右)はGitが「は?」って感じになって、何もしてくれない。
Gitが察してくれるのはどこかにその情報があるから。
トラッキングブランチの情報はどこに保存されてる?
じゃぁどこにその情報があるのかというと、.git\config ファイルの中にある。
やはり、左は有効で右は有効で無い状態。
白でハイライトした部分があるかどうか、それが違い。
その部分をよく見てみよう。
[branch "develop"]
remote = origin
merge = refs/heads/develop
これはGitの立場に立って言うと「作業ブランチが develop の時に pull 命令が出たときは、origin という名前の レポジトリから fetch をして、さらに refs/heads/develop で指定されるブランチから merge しますよ」
といった感じになる。
この部分がない時、Git は「pullしろって言われても情報が足りなくて出来ません(汗)」っと返答してくるわけです。
じゃぁ有効するには?
git branch コマンドの --set-upstream-to オプションを使います。
upstream(上流)をセットする、というわけです。
可視化すると、トラッキングされていないブランチは本流に繋がっていない独立した「川」みたいなもの。それを「本流」に繋げる作業が --set-upstream-to であって、本流を指定することで「独立した川」が「支流」になり、本流から支流に流れ込ませるのが pull ということになりますか・・・
このように新たに [branch "develop"] というブロックが設定ファイルに加えられました。
「本流」設定完了。