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

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

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


当前回答

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

其他回答

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

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

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

注意这里Araxis Merge有一个'-nowait'命令选项:

-nowait防止compare等待比较被关闭

也许这会返回一个立即退出码,可以工作,有人经历过吗?找不到类似的BeyondCompare选项…

下面使用meld和kdiff3

git difftool --dir-diff origin/branch1..origin/branch2

在您可以轻松浏览的窗口中打开所有文件。 可以在原点/分支名称的地方使用变更集吗

例如:git difftool——dir-diff origin/master..24604fb72f7e16ed44115fbd88b447779cc74bb1

这是我决定的……

复制以下代码到一个名为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的情况下,这将打开一个屏幕,每个文件都在自己的选项卡中。

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

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