git pullができないときの解決方法メモ

git pullしたらこんなエラーになってpullできない

$ git pull
You asked me to pull without telling me which branch you
want to merge with, and 'branch.branch_name.merge' in
your configuration file does not tell me, either. Please
specify which branch you want to use on the command line and
try again (e.g. 'git pull <repository> <refspec>').
See git-pull(1) for details.

If you often merge with the same branch, you may want to
use something like the following in your configuration file:
    [branch "branch_name"]
    remote = <nickname>
    merge = <remote-ref>

    [remote "<nickname>"]
    url = <url>
    fetch = <refspec>

See git-config(1) for details.


git remote show originを見ると、適当に変えてますがこんな結果に

$ git remote show origin
* remote origin
  Fetch URL: https://github.com/xxxxxxxxx/xxxxxxx.git
  Push  URL: https://github.com/xxxxxxxxx/xxxxxxx.git
  HEAD branch: master
  Remote branches:
    branch_name  tracked
    master       tracked
  Local branches configured for 'git pull':
    master       merges with remote master
  Local refs configured for 'git push':
    branch_name  pushes to branch_name  (local out of date)
    master       pushes to master       (up to date)


branch_nameブランチのpush先のブランチ名は「Local refs configured for 'git push':」で設定されているが
pull元のブランチ名が「Local branches configured for 'git pull':」で設定されていないのが原因。


branch_nameブランチは、ローカルで作成してpushしたブランチで、cloneして作成したブランチでないので、こういう状況になってる。


解決方法としては、pull元のブランチ名を設定してやればいい

$ git config branch.branch_name.merge refs/heads/branch_name
$ git config branch.branch_name.remote origin


これでgit pullできるようになる


git remote show originの結果は以下のようになる

$ git remote show origin
* remote origin
  Fetch URL: https://github.com/xxxxxxxxx/xxxxxxx.git
  Push  URL: https://github.com/xxxxxxxxx/xxxxxxx.git
  HEAD branch: master
  Remote branches:
    branch_name  tracked
    master       tracked
  Local branches configured for 'git pull':
    branch_name  merges with remote branch_name
    master       merges with remote master
  Local refs configured for 'git push':
    branch_name  pushes to branch_name  (up to date))
    master       pushes to master       (up to date)

git不安