为啥我在 git apply 上使用 --3way 时没有打开合并工具?

Posted

技术标签:

【中文标题】为啥我在 git apply 上使用 --3way 时没有打开合并工具?【英文标题】:Why the mergetool isn't opened when I use --3way on git apply?为什么我在 git apply 上使用 --3way 时没有打开合并工具? 【发布时间】:2013-04-11 15:30:36 【问题描述】:

为什么我无法使用带有 -3 选项的 git apply :

$ git apply --3way /tmp/0001-my-patch.patch
error: patch failed: a.h:9
Falling back to three-way merge...
Applied patch to 'a.h' cleanly.
error: patch failed: b.c:6
Falling back to three-way merge...
Applied patch to 'b.c' cleanly.
error: patch failed: drivers/Kconfig:1882
Falling back to three-way merge...
Applied patch to 'drivers/Kconfig' with conflicts.
U drivers/Kconfig

【问题讨论】:

这里的问题是什么?它正在尝试正常应用,然后按照指定回退到 3 路。 合并工具怎么打不开? 我不记得我是怎么解决的了,但是,确保 .gitconfig 有正确的 mergetool 配置 这能回答你的问题吗? Cannot use `git mergetool` with `git am` or `git apply` or `patch` 【参考方案1】:

这是一种将diffmerge 配置为合并工具的方法[取自here]:

git config --global merge.tool diffmerge

git config --global mergetool.diffmerge.cmd "diffmerge --merge
--result=\$MERGED \$LOCAL \$BASE \$REMOTE"

git config --global mergetool.diffmerge.trustExitCode true

【讨论】:

【参考方案2】:

来自git apply 的文档:

--3way 当补丁不能干净地应用时,回退到 3-way 合并

如果补丁应用干净,看起来 3way 将被忽略。

【讨论】:

以上是关于为啥我在 git apply 上使用 --3way 时没有打开合并工具?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 console.log.apply() 会抛出非法调用错误? [复制]

为啥 Git 在部署后会覆盖服务器上的文件?

为啥 Git 命令在 Windows 10 上通过 Win32-OpenSSH 失败?

为啥 std::apply 可以调用 lambda 而不是等效的模板函数?

为啥 CROSS APPLY 与列和聚合函数需要 Group by

git pull后为啥分支没有更新