質問: リモート側の変更によって発生したコンフリクトの効率的な解消方法はどのようにするでしょうか? あるリモートリポジトリをcloneして、自分のトピックブランチを立てて変更を行なっていますが、 リモート側で変更があったらしく、このままだとコンフリクトしてPRをマージできないと思うので、 ローカル側でそのコンフリクトを確認して修正したいと思っています。 自分が変更を加えていない箇所についてはコンフリクトしないと思うのですが、 変更した箇所についてコンフリクト部分を全てみて解消するのはどのようなコマンドでできるでしょうか? 追加: git fetch して git diff すると変更されたファイル一覧が表示されます。 また、 git status するとコンフリクトしているファイルがboth modified:として表示されます。 ここまでは理解しているのですが、どこが具体的にconflictしているのか全て確認して 効率よく直すような方法はないでしょうか、エディタはAtomかVSCodeを使っているので エディタの機能でも大丈夫です。 例えば、ツリー上にコンフリクト箇所を表示してくれるとか・・・ 後質問ですが、コンフリクトを修正した後にgit statusしてもコンフリクトしたままでしたが、 git add すると直りました、これはgit addした後に反映されるということでしょうか。
回答: 例えば最初のテキストが ``` ふとんがふっとんだ ``` だとします。これを ``` 布団が吹っ飛んだ ``` に変更してコミットし、fetch したらリモートが ``` ふとんが吹っ飛んだ!!! ``` という変更を行ったとします。(!!!を付けた) git diff すると ``` <<<<<<<< HEAD ふとんが吹っ飛んだ!!! ======== 布団が吹っ飛んだ >>>>>>>> ``` と出ると思います。上がオリジナル、下が変更された箇所です。オリジナルの内容を検討しつつ修正し ``` 布団が吹っ飛んだ!!! ``` この様に `<<<<<<<<` や `=======` や `>>>>>>>>` を消します。出来上がったら `git add ファイル名` して `git commit` すると、それがコンフリクト解消のためのコミットであるとコメントに書かれているのが分かると思います。 必要であればコミットメッセージを書き換えて保存するとマージが完了します。 あとは push すれば良いかと。