git dil-dir-diff不为无法比较的3使用创建临时文件。

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (39)

我正在尝试使用git的新目录diff命令(截至git 1.7.11),将BeytComponse 3作为区分工具,但是临时文件没有被创建。

例如:

git difftool --dir-diff <branch1> <branch2>

超越比较,打开一个目录比较正确的目录和更改的文件列出。

但是,当我单击任何文件时,都会得到以下错误:

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工作良好,作为非目录差异和合并的工具。

我正在使用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"
提问于
用户回答回答于

基本上,如果修改.gitconfig以使用BCompare.exe而不是BComp.exe,控制台会话将保持打开状态,直到“超越比较”窗口关闭为止。

修改.gitconfig设置以读取:

# External Visual Diff/Merge Tool
[diff]
    tool = bc3

[difftool "bc3"]
    path = "C:/Program Files (x86)/Beyond Compare 3/BCompare.exe"
用户回答回答于

ScottWegner的回答是有小缺点的--如果试图同时运行2比较,第二次将不起作用。这是因为BCompare.exe不运行第二个应用程序实例,因此,过早关闭启动进程。

可悲的是,BCompare.exe不理解/solo命令行选项,因此我在BeyCompare 3安装目录中编写小BAT文件:

C:\ProgramFiles(X86)\BeyBeyComp3BCompD.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\"

我不使用它作为默认的difftol,所以我将它命名为bc3dir然后使用Next:

git difftool --dir-diff --tool=bc3dir 760be6d47d35b42a6a2409636b40a5521361e72f^ 760be6d47d35b42a6a2409636b40a5521361e72f

扫码关注云+社区