git diff不会创建临时文件

时间:2012-11-02 13:19:46

标签: git diff gitk

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

我想查看一些代码更改,因此我启动了gitk来检查我想要审核的提交内容。在我更改的文件列表中,我突出显示第一个文件,并可以看到左侧的差异。但是我已经安装了Beyond Compare,右键单击第一个文件并选择“External Diff”。这工作正常,我可以在Beyond Compare中区分文件。

但是当我尝试对第二个文件执行相同操作时,它会失败。 Beyond Compare打开,我可以看到两个文件显示在路径中,但它们不存在。

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

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

我无法弄清楚为什么它不会创建那些临时文件?!?

我希望有人能对此有所了解。

由于

3 个答案:

答案 0 :(得分:3)

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

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

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

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

答案 1 :(得分:2)

gracchus的答案很明显,并帮助我解决了我的问题。

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

BComp.exe:

  

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

BCompare.exe:

  

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

答案 2 :(得分:0)

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

Options > General > Uncheck the "Allow only one instance to run" checkbox.