Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

コンフリクトとは

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

hkengo
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away