Git - автоматически создаёт различные файлы для версий с конфликтом

Когда Git обнаруживает конфликт во время слияния, поведение по умолчанию - заполнение файла маркерами >> ===.

Большую часть времени это нормально, но иногда мне хотелось бы решать конфликты по-другому, и я просто хотел бы, чтобы Git создавал различные файлы:

  • оригинальную версию,
  • изменённую версию A,
  • изменённую версию B.

Как этого добиться?


Если нет простой команды создать эти файлы за один заход (что несколько удивительно), может быть, есть способ расширить Git таким образом, чтобы он это делал? Пользовательский mergetool или что-то в этом роде? Просто идея.


Решение:

Я остановился на варианте @ Ответ Карла Билефельдта:

savefiles.sh

#!bash
BASE=$1
LOCAL=$2
REMOTE=$3
MERGED=$4

cp "$BASE" "$MERGED.git_BASE"
cp "$LOCAL" "$MERGED.git_LOCAL"
cp "$REMOTE" "$MERGED.git_REMOTE"

# never mark the conflict as merged
exit 1 

config

mergetool.savefiles.cmd=/path/to/savefiles.sh $BASE $LOCAL $REMOTE $MERGED
mergetool.savefiles.trustexitcode=true

10
задан Community 23 May 2017 в 11:47
поделиться