コンフリクトとは
gitでブランチ同士を統合する場合は, 下記のコマンドを使用します.
$git merge [マージするブランチ名]
この際に自動的にコードが統合されます. この際に自動で統合できないことをコンフリクトといいます.
コンフリクトが起きた場合は, ローカルで解消する必要があります.
http://blog.bonar.jp/entry/2014/09/04/223048
コンフリクトを起こしたファイルはLocal change
にて修正する.
手動で訂正する場合
masterブランチでsub_branchをマージする場合.
$git merge sub_branch
<body>
<<<<<<<HEAD
[ローカルブランチのコード]
=======
[マージするブランチのコード]
>>>>>>>2384792396c53837ec06b9c2a842bfccc28f3996ki
</body>
<<<<<<<
と>>>>>>>
で囲まれた部分を手動で修正する.
GitHubでの解消機能紹介
ローカルで解決しなくてもWebで解決できる様になっています。(2016/12/13リリース)
https://github.com/blog/2293-resolve-simple-merge-conflicts-on-github
コンフリクトのメッセージについて
コンフリクトの際にstageに乗らないファイルには, 下記のようなものがある.
修正が必要(かも?)
UU(both modified)
3ウェイマージした結果のコンフリクトファイル.
=>コンフリクトしている箇所を編集する必要あり.
AA(both added)
マージされるブランチ(HEAD)にあるファイルと、マージするブランチにあるファイルをマージした結果、変更箇所がコンフリクトしているファイル
=>コンフリクトしている箇所を編集する必要あり.
UD(deleted by them)
マージされるブランチ(HEAD)に存在するファイルが、マージするブランチでは削除されているファイル
=>ファイルを削除するか, 残すか選択
DU(deleted by us)
マージするブランチに存在するファイルが、マージされるブランチ(HEAD)では削除されているファイル.
=>ファイルを削除するか, 残すか選択
修正が不要
AU(added by us)
マージされるブランチ(HEAD)にのみ存在するファイル.
=>ファイルはそのまま
UA(added by them)
マージするブランチにのみ存在するファイルです。
=>自動的にstagingに乗る.
DD(both deleted)
マージされるブランチ(HEAD)及び、マージするブランチから削除されたファイル.
=>自動で削除
参考
http://qiita.com/uasi/items/c7845f61a2f681db7ce2
http://blog.bonar.jp/entry/2014/09/04/223048
Gitポケットリファレンス(書籍)