git 的问题 + OS X 上的 DiffMerge
我已使用以下说明将 Sourcegear DiffMerge 配置为我的默认 git 合并工具:
git config --global diff.tool diffmerge
git config --global difftool.diffmerge.cmd "diffmerge \"\$LOCAL\" \"\$REMOTE\""
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 false
来源:http://www.andrejkoelewijn.com/wp/2010/01/08/configure-diffmerge-with-git/
但是当我运行 git mergetool
我收到以下错误:
此问题的原因可能是什么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
可能不会有
$BASE
文件,例如,如果要合并的两个文件没有共同的祖先,或者如果您在应用或重新调整补丁而不是合并分支时碰巧遇到冲突。在这种情况下,虽然$BASE
变量仍会被设置,但那里不会有文件。在您的 mergetool 命令中,您需要检查
$BASE
是否存在,如果不存在,则进行没有共同祖先的合并。看起来 DiffMerge 不支持该模式(它支持合并两个没有共同祖先的文件,但它总是将输出写入其中一个文件,而不是结果文件)。相反,如果$BASE
不存在,您需要将$LOCAL
作为$BASE
文件传递:It is possible that there will be no
$BASE
file, if for instance the two files being merged have no common ancestor, or if you happen to get the conflict when applying or rebasing a patch rather than merging branches. In this case, while the$BASE
variable will still be set, there will be no file there.In your mergetool command, you need to check whether
$BASE
exists, and do a merge without a common ancestor if it does not. It doesn't look like DiffMerge supports that mode (it supports merging two files with no common ancestor, but it always writes the output to one of the files, not a result file). Instead, you'll need instead to pass in$LOCAL
as the$BASE
file if$BASE
does not exist: