У конфлікті злиття git, що створюються файли BACKUP, BASE, LOCAL та REMOTE?


122

Я припускаю, що файли LOCAL і REMOTE - це саме те, що підказує їх назва, але для чого BASE і BACKUP?

Відповіді:


166

Git виконує тристороннє злиття, знаходячи спільного предка (він же "основа злиття") двох гілок, які ви зливаєте. Коли ви викликаєте git mergetoolконфлікт, він створить ці файли, придатні для подачі в типовий тристоронній інструмент злиття. Таким чином:

  • foo.LOCAL: "наша" сторона конфлікту, тобто ваша галузь ( HEAD), яка буде містити результати об'єднання
  • foo.REMOTE: "їхня" сторона конфлікту - галузь, в яку ви зливаєтесь HEAD
  • foo.BASE: спільний предок. корисний для подачі в тристоронній інструмент для злиття
  • foo.BACKUP: вміст файлу перед викликом інструмента злиття зберігатиметься у файловій системі, якщо mergetool.keepBackup = true.

9
Ні. LOCAL- версія в HEAD. BACKUPбула версія, яка була на диску перед тим, як ви викликали mergetool. Він, ймовірно, містить конфліктні маркери diff3, і ви, можливо, відредагували його перед викликом mergetool.
Едвард Томсон


ось хороша стаття, що пояснює злиття справ, включаючи тристороннє злиття: git-scm.com/book/en/v2/…
qatz

16
слова LOCAL / REMOTE якимось чином вводять в оману, змушує мене думати, що вони мають на увазі "мої зміни" / "віддалені зміни", але насправді зазвичай в контексті "злиття в головний", LOCAL - це цільова галузь, яка є іншою модифікацією, і REMOTE є джерельною галуззю, яка є моїми модифікаціями. :)
TingQian LI

8
Вони ... Ви робите ребауз? Тому що сторони перевернуті в ребазі.
Едвард Томсон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.