Git で git pull するとマージすべきブランチがわからないと言われる場合の対処方法
Git の基本になりますが、 git pull
コマンドを実行すると次のようなメッセージが出て処理が走らないことがあります。
$ git pull
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details
git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=origin/<branch> master
Git は、 git pull
の基本形である git pull <remote> <branch>
の <remote>
と <branch>
が省略された場合「カレントブランチの upstream からカレントブランチに pull する」という挙動にフォールバックします。
そのときにカレントブランチの upstream がわからないと、上の出力のように「どのブランチを pull ( merge )すればいいのかわかりません」と言われます。
原因
カレントブランチの upstream が設定されていないこと。
解決方法
上の出力の説明文のとおりそのままですが、カレントブランチに upstream を指定してあげれば OK です。
upstream の指定で最も多いケースは、 master
ブランチの upstream をリモート origin
の master
ブランチに設定したくなる場合でしょう。
その場合は次のようにします。
git branch --set-upstream-to=origin/master master
一度これを行っておけば、以後 master
ブランチ上で引数を省略して git pull
を実行したら自動的に origin
の master
ブランチから pull してくれるようになります。
ちなみに、現在各ブランチの upstream がどのように設定されているか確認したい場合は、 git branch
コマンドに -vv
オプションを渡せば OK です。
$ git branch -vv
* master 65af859 [origin/master] いまだかつてないさいこうのこみっと。
ブランチ名とコミットハッシュのその次に [リモート名/ブランチ名]
という形で upstream ブランチが表示されます。
上のケースだと、 origin
というリモートの master
というブランチが upstream になっていることが確認できています。
以上です。