默认的git差异行为是依次打开每个差异文件(等待上一个文件关闭后再打开下一个文件)。

我正在寻找一种方法来打开所有的文件一次-在BeyondCompare例如,这将打开所有的文件在选项卡内同一BC窗口。

这将使审查一组复杂的变更更加容易;在差异文件之间来回切换,忽略不重要的文件。


当前回答

我写了一个powershell脚本,将复制两个工作树,并与DiffMerge进行比较。所以你可以这样做:

GitNdiff master~3 .

例如,比较三个签入前的主分支与当前工作树。

它又新又亮,可能满是虫子。一个缺点是,工作树中尚未添加的文件将被复制到两个工作树中。它也可能很慢。

http://github.com/fschwiet/GitNdiff

其他回答

写了一个小工具,打开所有文件作为标签页在vim。

https://github.com/balki/vimtabdiff

我写了一个powershell脚本,将复制两个工作树,并与DiffMerge进行比较。所以你可以这样做:

GitNdiff master~3 .

例如,比较三个签入前的主分支与当前工作树。

它又新又亮,可能满是虫子。一个缺点是,工作树中尚未添加的文件将被复制到两个工作树中。它也可能很慢。

http://github.com/fschwiet/GitNdiff

我确实找到了这个方法(GitDiff.bat和GitDiff.rb),它将文件复制到旧/新临时dirs,然后对它们进行文件夹比较。

但是我宁愿直接查看工作文件(从工作目录),因为BeyondCompare有一个方便的功能,可以在diff窗口内编辑文件,这对于快速清理非常好。

编辑:这里有一个类似的方法来回应我在git邮件列表上的问题。

Diffuse也有VCS集成。它与大量其他VCS进行互操作,包括SVN、Mercurial、Bazaar……对于Git来说,如果部分更改(但不是全部更改)是阶段性的,它甚至会显示三个窗格。在冲突的情况下,甚至会有四个窗格。

使用

diffuse -m

在Git工作副本中。

要我说,这是十年来我见过的最好的视觉差异。(我也试过融合。)

您可以使用gitk同时查看所有的差异