在机器A上,git mergetool的运行超出了预期的比较3。在机器B上,BC3启动,但没有在命令行上传递任何参数,因此显示的是介绍屏幕,而不是实际的合并。
我将配置从机器A复制到机器B,git config --list与安装路径和push.default=simple是完全相同的
merge.tool=bc3
mergetool.bc3='C:/Apps/BeyondCompare3/BCompare.exe'
mergetool.bc3.cmd='C:/Apps/BeyondCompare3/BCompare.exe'
mergetool.bc3.path=C:\Apps\BeyondCompare3\bcomp.exe
push.default=simple唯一的其他区别是机器A在Win7 64位下有git 1.7.11,而机器B(不工作的机器B)在Win8 32位下有git 1.8.4。
ProcessHacker显示,机器A上的命令行(对于完全相同的存储库,位对位)是:
"c:\Program Files (x86)\Beyond Compare 3\bcomp.exe"
./somefile.cs.LOCAL.4192.cs
./somefile.cs.REMOTE.4192.cs
./somefile.cs.BASE.4192.cs
-mergeoutput=somefile.cs /BCompWnd=$00140644在坏了的机器B上,它只是:
c:\Apps\BeyondCompare3\BCompare.exe我在这里需要什么魔法咒语?
发布于 2013-12-20 12:46:58
猜测一下:如果Git (在工厂配置中)已经知道bc3工具,它将使用mergetool.bc3.path和标准参数。如果不是,它将查找mergetool.bc3.cmd,但是这个参数需要在命令中显示正确的参数:
mergetool.bc3.cmd="'c:/apps/BeyondCompare3/bcomp.exe' '$LOCAL' '$REMOTE' '$BASE' '$MERGED'"由于一个不明确的原因,在机器B上,它不知道bc3的调用,而是使用mergetool.bc3.cmd返回,在您的例子中,mergetool.bc3.cmd遗漏了正确的参数。在机器A上,Git知道如何与BC3对话,并且将使用正确的工具调用,只使用mergetool.bc3.path。
要在机器A和B上分别验证删除mergetool.bc3.cmd和mergetool.bc3.path,行为应该与您所观察到的完全相同。
要修复它,请在mergetool.bc3.cmd上使用完整的调用。
https://stackoverflow.com/questions/20636392
复制相似问题