LoginSignup
119

More than 3 years have passed since last update.

[Git] コンフリクトの治し方

Last updated at Posted at 2016-12-08

コンフリクトとは

gitでブランチ同士を統合する場合は, 下記のコマンドを使用します.

$git merge [マージするブランチ名]

この際に自動的にコードが統合されます. この際に自動で統合できないことをコンフリクトといいます.
コンフリクトが起きた場合は, ローカルで解消する必要があります.

git_frow.png
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
fd64b010-c06b-11e6-9dd3-a827e299c5bf.gif

コンフリクトのメッセージについて

コンフリクトの際に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ポケットリファレンス(書籍)

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
119