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 をリモート originmaster ブランチに設定したくなる場合でしょう。 その場合は次のようにします。

git branch --set-upstream-to=origin/master master

一度これを行っておけば、以後 master ブランチ上で引数を省略して git pull を実行したら自動的に originmaster ブランチから pull してくれるようになります。

ちなみに、現在各ブランチの upstream がどのように設定されているか確認したい場合は、 git branch コマンドに -vv オプションを渡せば OK です。

$ git branch -vv
* master 65af859 [origin/master] いまだかつてないさいこうのこみっと。

ブランチ名とコミットハッシュのその次に [リモート名/ブランチ名] という形で upstream ブランチが表示されます。 上のケースだと、 origin というリモートの master というブランチが upstream になっていることが確認できています。

以上です。