4

我在使用 git 时遇到了一些奇怪的事情。我在我的 Windows 7 机器上使用 git。

我想查看一些代码更改,所以我启动了 gitk 来检查我想要查看的提交中的内容。在我的已更改文件列表中,我突出显示了第一个文件,并且可以看到其左侧的差异。但是我已经安装了 Beyond Compare,然后右键单击第一个文件并选择“外部差异”。这很好用,我可以在 Beyond Compare 中区分文件。

但是当我尝试对第二个文件做同样的事情时,它失败了。Beyond Compare 打开,我可以看到路径中显示了两个文件,但它们不存在。

当我查看我的文件系统时,我可以看到“git.gitk-tmp.7992”存在(引用的文件夹)但它是空的,因此当然 Beyond Compare 和 git difftool 无法获取它们。

当我尝试在两个分支之间执行“git difftool”时,也会发生类似的事情。

我不知道为什么它不会创建那些临时文件?!?

我希望有人可以对此有所了解。

谢谢

4

3 回答 3

4

我不太了解Beyond Compare,但我会尝试一下:

当您第一次运行外部差异时,它会启动 BC。第二次,它启动一个新的 BC 进程,找到前一个,因此它向第一个实例发送消息,然后退出。

当您在 gitk 中单击外部差异时,它会创建临时文件,运行给定的命令,等待程序退出,然后删除临时文件。当您已经拥有一个 BC 实例时,第二个实例几乎会立即退出,因此您找不到它们。

这是我能做的最好的 - 尝试挖掘 BC 的手册和论坛。

于 2012-11-07T17:22:44.367 回答
2

gracchus 的回答很到位,帮助我解决了我的问题。

在 Beyond Compare 的情况下,用户应该使用BComp.exegitk 而不是BCompare.exe(我正在使用的)。

BComp.exe:

这是一个 Win32 GUI 程序。如果从版本控制系统启动,它应该可以正常工作。如果从控制台窗口启动,控制台(或批处理文件)将不会等待它。

B比较.exe:

这是主要的应用程序。无论您打开了多少个窗口,一次只会运行一个副本。如果您启动第二个副本,它将告诉现有副本开始比较并立即退出。

于 2014-01-17T07:39:12.013 回答
1

我使用 gitk + WinMerge 并遇到了同样的问题。External diff我通过在调用命令或更改 WinMerge 设置之前关闭 WinMerge 的所有实例来避免此错误:

Options > General > Uncheck the "Allow only one instance to run" checkbox.
于 2019-09-13T14:47:12.607 回答