まくまくGitノート
マージ時のコンフリクトを解決する
2010-07-27

Git によるコンフリクトの発生と解決

2つのブランチ上で、同じファイルの同じ個所を修正していると、git mergegit pull を実行したときにコンフリクト(修正箇所の衝突)が発生します。 コンフリクトが発生した場合は、コンフリクトの原因となっているファイルを編集して、手動でコンフリクトしている箇所を修正する必要があります。 その後、そのファイルを git addgit commit することによって、全体のマージが完了します。

$ git add conflicted_file
$ git commit

マージ完了前の見え方

git commit する前に、git log でコミット履歴を確認すると、別のブランチで行われていたコミットはまだマージされていないように見えます。 これらのコミットは、git commit が終了した時点で見える(辿れる)ようになります。

また、git commit を実行する前に git status を見ると、あたかも別のブランチでのコミットで追加されたファイルが、今回の自分の git commit で追加されるかのようにステージングされているように見えます。 これは、実際には上記のマージ作業が終了すると、別のコミットでちゃんと追加されたように見えるようになりますので安心してください。

2010-07-27