※備忘録です。
コンフリクト解消にかなり手こずってしまったため、手順を記録しておきます。
◆実現したいこと
・プルリクエストをコンフリクトなく実行できるようにしたい
◆現状
・プルリクエストを実行すると、コンフリクトを解消してくださいと怒られてしまう。
◆原因
・正しいブランチに正しい順序でプルリクエストできていなかった。
・間違った状態でコマンドを実行しすぎてしまい、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
コンフリクトを正しく手動修正できていれば、コンフリクトすることなくプルリクエストができるはず。
以上