gitマージの競合で、生成されるBACKUP、BASE、LOCAL、およびREMOTEファイルは何ですか?


122

LOCALファイルとREMOTEファイルは、その名前が示唆するものだと思いますが、BASEとBACKUPは何のためのものですか?

回答:


166

Gitは3者間マージを実行し、マージする2つのブランチの共通の祖先(別名「マージベース」)を見つけます。git mergetool競合を呼び出すと、通常の3者間マージツールへのフィードに適したこれらのファイルが生成されます。したがって:

  • foo.LOCAL:競合の「私たち」側-つまり、HEADマージの結果を含むブランチ()
  • foo.REMOTE:紛争の「彼ら」側-マージするブランチ HEAD
  • foo.BASE:共通の祖先。3者間マージツールへのフィードに役立ちます
  • foo.BACKUP:マージツールを呼び出す前のファイルの内容は、ファイルシステムに保持されますmergetool.keepBackup = true

9
番号 LOCALはのバージョンですHEADBACKUPを呼び出す前にディスク上にあったバージョンでしたmergetool。おそらくdiff3競合マーカーが含まれており、を呼び出す前に編集した可能性がありますmergetool
Edward Thomson


ここでは、三方が合併を含む合併例を説明する良い記事です:git-scm.com/book/en/v2/...
qatz

16
LOCAL / REMOTEという言葉は、何となく誤解を招きやすく、「自分の変更」/「リモート変更」を参照していると思わせますが、実際には通常、「マスターにマージ」のコンテキストで、LOCALは他の変更であるターゲットブランチであり、REMOTE私の変更であるソースブランチです。:)
TingQian LI 2018

8
彼らは...リベースしていますか?リベースではサイドが逆になるためです。
エドワードトムソン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.