jmo*_*ohr 22 git msysgit beyondcompare3
我正在尝试使用git的新(作为git 1.7.11)目录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目录是否存在而不是.
超越比较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"
Run Code Online (Sandbox Code Playgroud)
Sco*_*ner 28
有记载的溶液在这里.基本上,如果您修改.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"
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
并将其用作工具
[difftool "bc3dir"]
path = C:/Program Files (x86)/Beyond Compare 3/bcompd.bat
cmd = \"C:/Program Files (x86)/Beyond Compare 3/bcompd.bat\" \"$LOCAL\" \"$REMOTE\"
Run Code Online (Sandbox Code Playgroud)
我不使用它作为默认的diff tol,所以我命名bc3dir并使用下一个:
git difftool --dir-diff --tool=bc3dir 760be6d47d35b42a6a2409636b40a5521361e72f^ 760be6d47d35b42a6a2409636b40a5521361e72f
Run Code Online (Sandbox Code Playgroud)
我尝试了@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\"
Run Code Online (Sandbox Code Playgroud)
请注意-solo. 这会导致 Beyond Compare 产生一个新的程序实例。
在 Windows 上,我们应该使用该/solo选项,但是由于git difftool命令会生成sh.exe以处理其命令行,因此该/solo选项被错误地解释为路径。所以我必须用它作为-solo
使用此选项,我运行start git difftool --dir-diff,因此这将释放我的命令提示符,并且新的提示符将继续等待 Beyond Compare 的新实例退出。这也将确保创建的临时文件/文件夹git将继续存在,直到 diff 工具退出。