当 Git 在合并期间检测到冲突时,默认行为是用<<<
>>>
===
标记填充文件。
大多数时候这是可以的,但有时我想以不同的方式解决冲突,我只想让 Git 创建不同的文件:
- 原版,
- 更改了版本 A,
- 更改了 B 版。
如何做到这一点?
如果没有简单的命令一次性创建这些文件(这有点令人惊讶),也许有一种方法可以扩展 Git 以便它可以做到这一点?风俗mergetool
还是什么?只是一个想法。
解决方案:
我已经选择了@Karl Bielefeldt 答案的变体:
保存文件.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
配置
mergetool.savefiles.cmd=/path/to/savefiles.sh $BASE $LOCAL $REMOTE $MERGED
mergetool.savefiles.trustexitcode=true