Когда Git обнаруживает конфликт во время слияния, поведение по умолчанию заключается в заполнении файла маркерами <<<
>>>
===
.
Это нормально в большинстве случаев, но иногда я хотел бы разрешать конфликты по-другому, и мне просто хотелось бы, чтобы Git создавал разные файлы:
- оригинальная версия,
- измененная версия A,
- измененная версия B.
Как это сделать?
Если нет простой команды для создания этих файлов за один раз (что несколько удивительно), возможно, есть способ расширить Git, чтобы он это сделал? Пользовательский mergetool
или что-то еще? Просто идея.
Решение:
Я согласился на вариант ответа @Karl Bielefeldt:
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