GIT diff GUI

27

我有两个较大的GIT分支之间有一个相当大的差异,希望能够以某种美观易用的UI并排打开它们。 要能够轻松显示差异,并且希望能够逐个合并差异。 git diff难以使用。


我将把这个作为评论添加,因为我从未使用过它,但是gitk可以解决问题吗? - seth
抱歉...我以为注释也需要格式化。 - seth
Jarub Nareski刚给了我答案...git difftool是关键....非常酷,例如你可以使用opendiff快速将2个损坏的分支合并成一个未损坏的分支。我的问题是除了一件事在一个分支上都能正常工作,而另一个分支上有这个确切的问题,如果不用opendiff我可能要花费10个小时才能找出我拼错了一个单词,但用opendiff只花了我3分钟。 - daniel
请参考https://dev59.com/KHRA5IYBdhLWcg3wyRJ7#1017034,了解有关git difftool设置的实际示例。 - VonC
3个回答

26
答案是git difftool (至少适用于git版本1.6.3及更高版本)。请记住,它只调用已配置或自动找到的图形化差异工具。

3
git difftool --tool=opendiff testbranch master - daniel
1
与其使用“testbranch master”来显示testbranch和master之间的差异,当审查分支“testbranch”时,您通常只想看到该分支上的提交。为此,请使用“master...testbranch”(三个句点)。如果testbranch是当前HEAD,则可以缩写为“master...”。 - Jonathan Hartley
@JonathanHartley:Diff 总是关于两个端点,而不是提交范围。在图形化的仓库浏览器中,例如 gitk(或 git log --graph),master...testbranch 显示了两个分支到共同祖先的情况。对于 diff,master...testbranch 是共同祖先和(我认为)testbranch 的差异的快捷方式。 - Jakub Narębski
@viper33m:任何细节都将不胜感激。你能否在git@vger.kernel.org上发布一个错误报告? - Jakub Narębski
@JakubNarębski 对不起,看起来在Ubuntu早于10.10的版本中meld无法工作,而不是实际的difftool。https://bugs.launchpad.net/ubuntu/+source/meld/+bug/579487 - mihaicc

25

我使用kompare

git diff | kompare -

kompare 不仅限于 git,你也可以进行其他操作。

svn diff | kompare -
bzr diff | kompare -
diff -Naur clean/ patched/ | kompare -
kompare bug3.fix.diff

...你懂的。


谢谢。也适用于 meld - elpddev

1

如果您正在合并过程中,git diff有一个非常好的语法,其中前两列显示每行的父级关系,以一种统一的合并差异方式。从那里,使用任何编辑器都很容易解决冲突。

您是否已经打开了漂亮的颜色?这是我 ~/.gitconfig 的一段代码:

[color]
    diff = auto
    branch = auto
    status = auto
    interactive = auto

无论如何,看一下kdiff3,例如。您可以指定用于合并的工具,请参阅git-mergetool文档以获取详细信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接