Как я могу увидеть "трехстороннее различие" для конфликта слияния Git?
Предположим, я нахожусь на ветке Git master
и я git merge featurebranch
, Существует конфликт в foo.html
,
Когда я открою foo.html
Я вижу, в зоне конфликта, что master
есть и что featurebranch
есть. Но я не могу сказать, какие изменения были сделаны на master
что противоречило featurebranch
; Я знаю только то, что сейчас есть у мастера.
Я хотел бы видеть различия, которые каждый применил.
Или, чтобы получить ту же информацию, я мог видеть:
- Версия
master
сейчас - Версия
featurebranch
сейчас - Версия, которую имел их общий предок
Как я могу это увидеть?
2 ответа
Из git-merge (1),
Альтернативный стиль можно использовать, установив переменную конфигурации "merge.conflictstyle" в "diff3".
В добавок к
<<<<<<<
,=======
, а также>>>>>>>
маркеры, он использует другой|||||||
маркер, за которым следует исходный текст. Вы можете сказать, что оригинал только что констатировал факт, и ваша сторона просто подчинилась этому заявлению и сдалась, в то время как другая сторона пыталась иметь более позитивный настрой. Иногда вы можете придумать лучшее разрешение, просмотрев оригинал.
Это может быть включено с помощью
$ git config --global merge.conflictstyle diff3
Многие инструменты различий / слияния в графическом интерфейсе имеют вид слияния в 3 или 4 направления. Я настоятельно рекомендую Beyond Compare для разрешения конфликтов слияния. Другой (хорошо) инструмент - DiffMerge.
Вы можете настроить собственный mergetool для использования с git mergetool
команда. Это мое .gitconfig
Конфигурация Beyond Compare (Pro edition) и DiffMerge на моем компьютере с Windows с помощью msysgit:
[merge]
tool = bc3
[diff]
tool = bc3
[difftool "dm"]
cmd = C:/Program\\ Files/SourceGear/Common/DiffMerge/sgdm.exe \"$LOCAL\" \"$REMOTE\"
[difftool "bc3"]
cmd = "\"c:/program files (x86)/beyond compare 3/bcomp.exe\" \"$LOCAL\" \"$REMOTE\""
[mergetool "bc3"]
cmd = "\"c:/program files (x86)/beyond compare 3/bcomp.exe\" \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\""
Вы можете прочитать больше о различных конфигурациях инструментов diff/merge в официальной документации Linux Kernel Git для git config
,