我已签出feature/my-branch
并正在运行git merge dev
。添加到文件中的冲突标记是:
<<<<<<< HEAD
let foo = "foo"
let bar = "bar"
||||||| merged common ancestors
let baz = "baz"
let bar = "bar"
=======
let baz = "baz"
let qux = "qux"
>>>>>>> dev
然后我运行git mergetool
。我已p4mergetool
设置为我的合并工具,它似乎正在工作。我的.gitconfig
:
[merge]
tool = p4mergetool
conflictstyle = diff3
[mergetool "p4mergetool"]
cmd = /Applications/p4merge.app/Contents/Resources/launchp4merge $PWD/$BASE $PWD/$REMOTE $PWD/$LOCAL $PWD/$MERGED
trustExitCode = true
自动将git mergetool
上述冲突(工具中显示 0 个冲突)解决为:
let foo = "foo"
let qux = "qux"
这是有道理的:即使 HEAD 和 dev 发生冲突,我们也可以看到一个分支更新了一行,而另一个分支更新了另一行。所以我们大概可以假设我们想要什么。
我的问题是:
- 有没有办法运行/配置
git-mergetool
或p4mergetool
专门不做这个假设并且仍然显示冲突? 我是否需要同时运行这两个命令:
git merge dev git mergetool
让这个冲突自动解决这个问题?即产生输出:
let foo = "foo" let qux = "qux"
换一种说法:是否有一个 git 合并策略/参数,我可以使用它来简单地运行merge
命令来生成:
let foo = "foo"
let qux = "qux"