首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >git difftool --dir-diff没有为Beyond Compare 3创建要使用的临时文件

git difftool --dir-diff没有为Beyond Compare 3创建要使用的临时文件
EN

Stack Overflow用户
提问于 2012-11-09 23:32:14
回答 3查看 8.4K关注 0票数 26

我正在尝试使用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设置:

代码语言:javascript
复制
# 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"
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-30 08:31:06

有一个here描述的解决方案。基本上,如果您将.gitconfig修改为使用BCompare.exe而不是BComp.exe,控制台会话将保持打开状态,直到关闭Beyond Compare窗口。

将您的.gitconfig设置修改为:

代码语言:javascript
复制
# External Visual Diff/Merge Tool
[diff]
    tool = bc3

[difftool "bc3"]
    path = "C:/Program Files (x86)/Beyond Compare 3/BCompare.exe"
票数 30
EN

Stack Overflow用户

发布于 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

代码语言:javascript
复制
start /wait "" "%~dp0/bcomp.exe" %* /solo

并将其用作工具

代码语言:javascript
复制
[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,并使用如下代码:

代码语言:javascript
复制
git difftool --dir-diff --tool=bc3dir 760be6d47d35b42a6a2409636b40a5521361e72f^ 760be6d47d35b42a6a2409636b40a5521361e72f
票数 5
EN

Stack Overflow用户

发布于 2018-09-05 02:15:02

我试过@ScottWegner的答案,但它只在Beyond Compare没有运行的时候有效。我在@SergeyAzarkevich的答案的帮助下找到了解决方案。这就是我在我的.gitconfig中所做的

代码语言:javascript
复制
[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工具退出。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13310995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档