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> masterGit は、 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 になっていることが確認できています。
以上です。