しかし、「![拒否]」というエラーと「早送りしない」というエラーが表示されます。
これは、Gitがブランチからの変更を現在のマスターにマージできないためです。ブランチをチェックアウトmaster
し、リモートブランチにマージしたいとしますother-branch
。これを行うとき:
$ git pull origin other-branch
Gitは基本的にこれを行っています:
$ git fetch origin other-branch && git merge other-branch
つまり、pull
aのfetch
後には。が続きmerge
ます。ただし、pull
-ingの場合、Gitは早送りマージを実行できる場合にのみマージします。早送りマージは、マージしようとしているブランチのヘッドが、マージするブランチのヘッドの直接の子孫であるマージです。たとえば、この履歴ツリーがある場合、マージすると早送りのマージになります。other-branch
other-branch
O-O-O-O-O-O
^ ^
master other-branch
ただし、これは早送りのマージではありません。
v master
O-O-O
\
\-O-O-O-O
^ other-branch
問題を解決するには、最初にリモートブランチをフェッチします。
$ git fetch origin other-branch
次に、それを現在のブランチにマージし(これを想定しますmaster
)、マージの競合を修正します。
$ git merge origin/other-branch
# Fix merge conflicts, if they occur
# Add merge conflict fixes
$ git commit # And commit the merge!