GitHub上でmasterブランチがズレにズレてmergeできない時

ズレてない?

マージしたくてもできない。プッシュしたくてもできない。

プルリクエストが送られてきたので、すんなり受け入れてマージしようとしても、できない!

理由は簡単で、もうコミットがズレにズレてる。

◯ commits ahead, ◯ commits behind

マスターが前に行ってたり、後ろに行ってたり。とりあえず色んなコミットがこんがらがってる状態。

branchのコミット状況

これを解決しないとすんなりマージできません。

ローカルで作業する

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

(Visited 701 times, 1 visits today)