Rom*_*kov 6 git msysgit git-merge
在机器A上,git mergetool按预期运行Beyond Compare 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
Run Code Online (Sandbox Code Playgroud)
唯一的区别是机器A在Win7 64位下具有git 1.7.11,而机器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
Run Code Online (Sandbox Code Playgroud)
在破碎的机器B上,它只是:
c:\Apps\BeyondCompare3\BCompare.exe
Run Code Online (Sandbox Code Playgroud)
我需要哪种神奇的咒语?
只是猜测:\xc2\xa0如果 Git 已经(在其工厂配置中)了解 bc3 工具,它将mergetool.bc3.path与标准参数一起使用。如果没有,它会查找mergetool.bc3.cmd,但这需要在命令中指定正确的参数:
mergetool.bc3.cmd="\'c:/apps/BeyondCompare3/bcomp.exe\' \'$LOCAL\' \'$REMOTE\' \'$BASE\' \'$MERGED\'"\nRun Code Online (Sandbox Code Playgroud)\n\n由于一个模糊的原因,在机器 B 上,Git 不知道 的调用bc3,并且在您的情况下使用mergetool.bc3.cmd它错过了正确的参数。在机器 A 上,Git 知道如何与 BC3 对话,并将使用正确的工具调用,仅使用mergetool.bc3.path.
mergetool.bc3.cmd要分别在计算机 A 和 B 上验证此删除mergetool.bc3.path,行为应该与您观察到的完全相同。
要修复此问题,请使用 上的完整调用mergetool.bc3.cmd。