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

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

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


当前回答

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

https://github.com/balki/vimtabdiff

其他回答

对于那些有兴趣在Mac OS X和Araxis上使用git-diffall的人,我在github上分叉了git-diffall项目,并添加了一个包装Araxis合并命令的AppleScript。注意:这是Mac OS X的Araxis Merge附带的araxisgitdiff文件的一个稍微修改的克隆。

https://github.com/sorens/git-diffall

如果你想要做的就是打开当前修改过的所有文件,试试下面的方法:

vi $(git status | sed -n '/.*modified: */s///p')

如果您正在提交“复杂的更改集”,您可能需要重新考虑您的工作流。git的一个非常好的特性是,它使开发人员可以轻松地将复杂的更改集简化为一系列简单的补丁。与其尝试编辑当前修改的所有文件,不如查看git add——patch,它将允许您有选择地分段块。

这是我决定的……

复制以下代码到一个名为git-diffall的文件(没有扩展名):

#!/bin/sh
git diff --name-only "$@" | while read filename; do
    git difftool "$@" --no-prompt "$filename" &
done

将文件放在git安装目录的cmd文件夹中(例如C:\Program Files (x86)\Git\ cmd)

然后使用like you would git diff:

git diffall
git diffall HEAD
git diffall --cached 
git diffall rev1..rev2
etc...

注意:它的关键是&参数,它告诉外部diff命令在后台任务中运行,以便立即处理文件。在BeyondCompare的情况下,这将打开一个屏幕,每个文件都在自己的选项卡中。

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

https://github.com/balki/vimtabdiff

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

GitNdiff master~3 .

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

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

http://github.com/fschwiet/GitNdiff