ページ目次
マージしたくてもできない。プッシュしたくてもできない。
プルリクエストが送られてきたので、すんなり受け入れてマージしようとしても、できない!
理由は簡単で、もうコミットがズレにズレてる。
◯ commits ahead, ◯ commits behind
マスターが前に行ってたり、後ろに行ってたり。とりあえず色んなコミットがこんがらがってる状態。
これを解決しないとすんなりマージできません。
ローカルで作業する
GitHub上でも解決できるようなのですが、操作方法がイマイチよく分からない(爆)ので、ローカルで作業しようと思います。
リモートのブランチをローカルにコピー
まずはGitHub上のブランチ一式を取得し、チェックアウトします
$ git fetch remote_name
$ git checkout -b new_branch remote_name/branch_name
checkout -b [新しいブランチ名] [remote名]/[ブランチ名]
と、することで、リモートブランチをそのままローカルに持ってくることができます。
コンフリクトがあれば解消してマージ
masterをコピーしたブランチにマージします。
まずmasterをマージです。masterより先に行ってしまった(masterブランチで、◯ commits behindとなっている)部分を取り込む作業となります。
その後、masterに移動し、当該ブランチをmasterにマージです。
$ git branch
* new_branch
master
// コピーしたブランチにmasterをマージする
$ git merge master
$ git checkout master
$ git merge new_branch
この時コンフリクトが発生したら、適宜修正します。その後コミットをします。
$ git add .
$ git commit -m 'コンフリクトを解決'
$ git merge [mergeするbranch]
これですべてのコミットを内包したmasterができあがりました。無事リモートにもプッシュでき、masterが最新のブランチとなりました。
$ git push remote_name master