LoginSignup
0
0

More than 1 year has passed since last update.

【解消】プルリクエストでコンフリクトが発生してしまう

Posted at

※備忘録です。
コンフリクト解消にかなり手こずってしまったため、手順を記録しておきます。

◆実現したいこと
・プルリクエストをコンフリクトなく実行できるようにしたい

◆現状
・プルリクエストを実行すると、コンフリクトを解消してくださいと怒られてしまう。

◆原因
・正しいブランチに正しい順序でプルリクエストできていなかった。
・間違った状態でコマンドを実行しすぎてしまい、gitの状態がぐちゃぐちゃになってしまった。

◆解決方針
・Gitをぐちゃぐちゃになる前に戻す
・コンフリクトを手動で修正する

◆解決手順
・現状のブランチの状況を確認する

$ git branch

・gitの状態をある特定の場所まで戻す

$ git reset --hard URL

※URLには、戻したいgitバージョンのURLを貼る。URLはgithubから確認できる

・特定の場所まで戻れたら、いらなくなったコミットを削除する

$ git revert URL

※git logでもURLを確認できる

----- ここまでで、ぐちゃぐちゃになってしまったものを、整えることができた。
----- ここからは、コンフリクトの解消へ進む

・本流へ移動

$ git checkout [main] ※[]の中には、使っている名称を入力する

・ローカルリポジトリにブランチをマージする

$ git pull

・新しく本流からブランチを切り出す

$ git checkout -b [feature/test-solve-conflict] 

※[]の中には、自分で決めたブランチ名を入力する
※新しく本流からブランチを切り出す理由は、問題をシンプルにしたかったから。本流のリポジトリでは、チーム開発の進み具合によっては更新が進み、コンフリクトが積み重なってしまう可能性がある。それを避けるため、コミットする前に最新版をgit pullして、古いブランチをそのまま使うのではなく、新しいブランチを切り出して使う。

・コミットを書き換える

$ git merge --squash [feature/test]

※[]の中には、もともと使っていたブランチを入力する。

----- ここでコンフリクトを手動解消

・改めてプルリクエストを行う

$ git add *
$ git commit
$ git push origin feature/test-solve-conflict

コンフリクトを正しく手動修正できていれば、コンフリクトすることなくプルリクエストができるはず。

以上

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0