在GUI中探索git-diff输出?

时间:2010-11-11 23:17:16

标签: git git-diff

是否有允许在GUI中探索输出git-diff命令的程序?

我正在寻找的是类似于SmartGit如何显示其对工作副本和HEAD之间差异的看法。显示与HEAD不同的每个文件,并显示焦点文件的差异。

我不确定是否可以让SmartGit显示“git diff”命令的输出。

alt text

9 个答案:

答案 0 :(得分:10)

从git v1.7.11开始,您可以使用git difftool --dir-diff来执行目录差异。

以下答案适用于早于v1.7.11的git安装。


正如其他人所提到的,git difftool可用于在GUI中打开你的差异。但是,如果您有多个带有更改的文件,它将为每个文件打开一个单独的GUI实例。

我编写了一个脚本来解决这个“功能”,并允许在一个GUI实例中打开所有文件。您可以找到git diffall script on GitHub

此外,您可能对此相关的SO问题感兴趣:

git difftool, open all diff files immediately, not in serial

答案 1 :(得分:1)

git diff有一个--ext-diff选项,可以将diff输出传递给外部diff程序。已知与Git一起使用的流行开源差异程序包括kdiff3Meld

答案 2 :(得分:1)

git difftool将运行所有流行的,如meld,tkdiff等。另外,对于合并,你可以运行git mergetool。

答案 3 :(得分:1)

我不确定我是否正确理解了您的问题,但显然在下一版本的SmartGit(2.0, currently available in alpha)中,您可以使用日志窗口在任意提交之间进行差异 - 我还没试过但是。

答案 4 :(得分:1)

Beyond Compare很好地做到了这一点-无需对创建.diff文件的基本'git diff'命令进行任何配置更改。 “超出比较”将显示所有文件,这些文件在文件树视图中的.diff文件中被引用,并且在您选择文件时会显示每个文件的diff。

在“超越比较”中,使用“工具->查看补丁”菜单选项

答案 5 :(得分:0)

请注意,您现在可以(git 1.7.11,2012年6月)diff目录(即在打开difftool之前显示要比较的所有文件,而不是每个文件对运行一次外部工具的实例)。 )

请参阅“git difftool to give directory compare?

答案 6 :(得分:0)

我知道您在寻找GUI而不是TUI,但是vi / vim / vimdiff将显示一个语法突出显示的diff文件:view changes.diff,其中changes.diff是通过{{ 1}}。我一直到处寻找一个GUI,该GUI会读取这些文件之一,但无济于事-git --no-pager diff > changes.diff有一个meld选项,但是不管比较文件格式是什么,它都不会使用常规(统一)差异输出。

答案 7 :(得分:0)

JetBrains产品(例如IntelliJ,GoLand,PyCharm等)均内置了差异工具。如果要在当前提交与上一次提交之间进行区分,只需右键单击代码行左侧并启用注释,然后单击任何注释,即可查看所有文件的区分。

此外,如果您想查看当前分支与另一个分支(如origin / master)的差异,也可以这样做。您只需右键单击根目录,然后将鼠标悬停在Git菜单上,然后单击“与分支比较”,然后选择“主”,即可一起查看所有差异,就像在Github上查看“拉取请求”一样。

答案 8 :(得分:0)

这里是 a site 来执行此操作 - Diffy - 一种用于共享差异的工具。

您可以在那里粘贴差异文本输出,或上传包含差异输出的文件,然后它会自动在树浏览器上显示差异。这适用于您没有任何权限在您的机器上安装程序的情况(谢谢雇主!)。