【发布时间】:2020-07-21 09:08:26
【问题描述】:
我已在 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让这个冲突自动解决? IE。产生输出:
let foo = "foo" let qux = "qux"
换一种说法:有没有一个 git 合并策略/参数可以用来简单地运行merge 命令来产生:
let foo = "foo"
let qux = "qux"
【问题讨论】:
标签: git merge git-config mergetool p4merge