git difftool --dir-diff没有为Beyond Compare 3创建临时文件

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)

  • 这对我有用。但是,beyond compare 网站上的说明是错误的 (2认同)
  • 如果“超越比较”已在运行,则无法使用 (2认同)

Ser*_*ich 5

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)


Vik*_*ram 5

我尝试了@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 工具退出。