Какие файлы BACKUP, BASE, LOCAL и REMOTE создаются в случае конфликта слияния git?


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

9
Они ... Ребаз делаешь? Потому что при перебазировании стороны меняются местами.
Эдвард Томсон
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.