【发布时间】:2011-10-13 06:41:20
【问题描述】:
当 Git 在合并期间检测到冲突时,默认行为是使用 <<< >>> === 标记填充文件。
这在大多数情况下都可以,但有时我想以不同的方式解决冲突,我只想让 Git 创建不同的文件:
- 原版,
- 更改了版本 A,
- 更改了 B 版。
如何实现?
如果没有简单的命令一次性创建这些文件(这有点令人惊讶),也许有一种方法可以扩展 Git 以便它可以做到?自定义mergetool 还是什么?只是一个想法。
解决方案:
我已经选择了@Karl Bielefeldt's answer 的变体:
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
配置
mergetool.savefiles.cmd=/path/to/savefiles.sh $BASE $LOCAL $REMOTE $MERGED
mergetool.savefiles.trustexitcode=true
【问题讨论】:
-
您可以查看以下答案以查看示例工作流程:stackoverflow.com/questions/161813/…
-
我以前见过,谢谢!
标签: git version-control merge-conflict-resolution