"git difftool"在Windows上不显示添加的文件



git difftool在Windows上似乎很困惑。如果添加了新文件,Git会将"\.\nul"作为"左"文件发送到diff工具。

要复制此:

{create a new file}
git add .
git difftool --staged

现在,WinMerge(或您使用的任何查看器(启动,但报告左侧路径("\.\nul"(无效。

多年来,这个问题在SO上已经报道了好几次。例如,这是完全相同的问题:

如何让winmerge在git中显示新文件的diff?

然而,上述问题(以及所有其他问题(中被接受的解决方案对我来说根本不起作用。现在我们已经进入2020年,有官方的解决方案吗?

Mercurial从未遇到过这种问题。它向diff查看器发送有效路径,并且运行良好。我很惊讶在Git上遇到这个问题。

Git需要提供一种方法来指示特定文件不存在。创建或删除文件时会发生这种情况。

在Unix上,表示diff中不存在的文件组件的典型方法是指定/dev/null。然而,Windows并没有在特定路径中指定其设备;相反,NUL设备可以从文件名为NUL的任何路径访问。

不管WinMerge告诉你什么,这确实是一个有效的路径,它应该在Windows中工作得很好。(例如,您应该能够在CMD或PowerShell提示符下编写类似git diff --no-index .nul foo.c的内容,其中foo.c是项目中的路径。(如果您看到此问题,也许您应该向WinMerge问题跟踪器报告。

相关内容

  • 没有找到相关文章