誰かがブランチを作成したとします。リモートサーバーからxyz
ブランチをプルするにはどうすればいいでしょうか(例:xyz
GitHubxyz
) を作成し、それをローカル リポジトリの既存のブランチにマージできますか?
答えはブランチをGitにプッシュする「! [拒否]」というエラーが表示され、「早送り不可」と表示されます。
ベストアンサー1
しかし、「! [拒否]」というエラーと「早送り不可」に関するエラーが表示されます
これは、Git がブランチの変更を現在のマスターにマージできないためです。ブランチ をチェックアウトしmaster
、リモート ブランチ にマージするとしますother-branch
。これを行うと、次のようになります。
$ git pull origin other-branch
Git は基本的に次のことを行います:
$ git fetch origin other-branch && git merge other-branch
つまり、 a はa の後に が続くpull
だけです。ただし、-ing の場合、Git はfast-forwardマージを実行できる場合にのみマージを行います。fast-forwardマージとは、マージしようとしているブランチのヘッドが、マージするブランチのヘッドの直接の子孫であるマージです。たとえば、この履歴ツリーがある場合、マージするとfast-forward マージになります。fetch
merge
pull
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!