TLDR
Предполагается, что ваша цель слияния извлечена, т. Е. HEAD
, а ваш источник слияния равен $BRANCH
:
git merge-tree `git merge-base $BRANCH HEAD` HEAD $BRANCH | grep "^<<<<<<<\|changed in both"
Подробнее
Предполагается, что ваша цель слияния извлечена, т. Е. HEAD
, и ваш источник слияния равен $BRANCH
, сначала "найдите как можно больше общих предков для слияния" :
git merge-base $BRANCH HEAD
Выше следует вывести хеш-значение для коммита; назвать это значение $merge_base
.
Далее "показать трехстороннее слияние без касания индекса" :
git merge-tree $merge_base HEAD $BRANCH
Вышеприведенное должно выводить «тривиальные результаты слияния и противоречивые стадии в стандартный вывод».
Если HEAD
уже обновлен по отношению к $BRANCH
, вывод не производится.
Если есть конфликты слияния, вывод должен содержать маркеры конфликта Git. Вы можете определить, есть ли такая команда:
git merge-tree $merge_base HEAD $BRANCH | grep "^<<<<<<<"
Вы также можете посмотреть текст «изменено в обоих»:
git merge-tree $merge_base HEAD $BRANCH | grep "changed in both"
Все вышеперечисленные команды в виде строки (Bash):
git merge-tree `git merge-base $BRANCH HEAD` HEAD $BRANCH | grep "^<<<<<<<\|changed in both"
Это был адаптирован с этот ответ на этот вопрос: