我正在尝试使用git的new (从git 1.7.11开始) directory diff命令和Beyond Compare 3作为difftool,但是没有创建临时文件。
例如:
git difftool --dir-diff <branch1> <branch2>
Beyond Compare打开一个目录比较,其中列出了正确的目录和更改的文件。
但是,当我单击任何文件时,我得到以下错误:
Unable to load C:\Users\<username>\AppData\Local\Temp\git-difftool.yG8V5\left\<path to some file>: The system cannot find the path specified
因此,我检查C:\Users\<username>\AppData\Local\Temp\git-difftool.yG8V5
目录是否存在,但它不存在。
Beyond Compare 3可以很好地作为非目录差异和合并的difftool。
我使用的是git for Windows (msysgit) 1.8.0。
以下是相关的.gitconfig设置:
# External Visual Diff/Merge Tool
[diff]
tool = bc3
[difftool "bc3"]
path = "C:/Program Files (x86)/Beyond Compare 3/BComp.exe"
[merge]
tool = bc3
[mergetool "bc3"]
keepTemporaries = false
trustExitCode = true
keepBackup = false
path = "C:/Program Files (x86)/Beyond Compare 3/BComp.exe"
发布于 2012-11-30 08:31:06
有一个here描述的解决方案。基本上,如果您将.gitconfig修改为使用BCompare.exe
而不是BComp.exe
,控制台会话将保持打开状态,直到关闭Beyond Compare窗口。
将您的.gitconfig设置修改为:
# External Visual Diff/Merge Tool
[diff]
tool = bc3
[difftool "bc3"]
path = "C:/Program Files (x86)/Beyond Compare 3/BCompare.exe"
发布于 2017-02-27 16:12:35
Scott Wegner的回答是有一个小缺点-如果你试图同时运行2个比较,第二个将不起作用。这是因为BCompare.exe不运行第二个应用程序实例,因此过早地关闭了启动的进程。
遗憾的是,BCompare.exe不理解/solo
命令行选项,所以我在Beyond Compare 3安装目录中编写了一个小的bat文件:
C:\Program Files (x86)\Beyond Compare 3\BCompD.bat
start /wait "" "%~dp0/bcomp.exe" %* /solo
并将其用作工具
[difftool "bc3dir"]
path = C:/Program Files (x86)/Beyond Compare 3/bcompd.bat
cmd = \"C:/Program Files (x86)/Beyond Compare 3/bcompd.bat\" \"$LOCAL\" \"$REMOTE\"
我没有使用它作为默认的diff tol,所以我将它命名为bc3dir
,并使用如下代码:
git difftool --dir-diff --tool=bc3dir 760be6d47d35b42a6a2409636b40a5521361e72f^ 760be6d47d35b42a6a2409636b40a5521361e72f
发布于 2018-09-05 02:15:02
我试过@ScottWegner的答案,但它只在Beyond Compare没有运行的时候有效。我在@SergeyAzarkevich的答案的帮助下找到了解决方案。这就是我在我的.gitconfig
中所做的
[diff]
tool = bc3
[difftool]
prompt = false
[difftool "bc3"]
cmd = \"c:/program files (x86)/beyond compare 3/bcompare.exe\" -solo \"$LOCAL\" \"$REMOTE\"
请注意-solo
。这会导致Beyond Compare产生一个新的程序实例。
在windows上,我们应该使用/solo
选项,但由于git difftool
命令会派生sh.exe
来处理其命令行,所以/solo
选项被错误地解释为路径。所以我必须使用它作为-solo
使用此选项时,我运行start git difftool --dir-diff
,因此这将释放我的命令提示符,并且新的提示符将继续等待Beyond Compare的新实例退出。这也将确保由git
创建的临时文件/文件夹将继续存在,直到diff工具退出。
https://stackoverflow.com/questions/13310995
复制相似问题