为啥我在 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 命令在 Windows 10 上通过 Win32-OpenSSH 失败?
为啥 std::apply 可以调用 lambda 而不是等效的模板函数?