这个答案对于查看签入git的两个文件之间的视觉差异非常有用: 我如何查看'git diff'输出与一个可视化的diff程序?

然而,我希望看到两个分支之间的视觉差异。到目前为止,我最好的选择似乎是:

git diff --name-status master dev

这不是很有信息量,也不是很直观。

还有更好的吗?


当前回答

在GitExtensions中,你可以用Ctrl键在修订网格中选择两个分支。然后,您可以看到这些分支之间不同的文件。当你选择一个文件时,你会看到它的diff。

从这里开始

或者您可以右键单击任何修订,并选择比较>比较分支…

然后你可以选择与哪个分支进行比较:

最后,您会看到一个Diff窗口,列出两个分支之间不同的文件,对于每个文件,它都会显示一个Diff视图。

其他回答

如果你使用的是OSX或Windows 7+, Atlassian SourceTree可以很好地解决这个问题。它是免费的。

您可以在并排的diff设置中看到分阶段的更改,并且可以轻松地将本地分支与远程分支和任何其他两个分支进行比较。当选择多个文件时,差异显示如下:

假设你已经签出了一个功能分支,你想要查看与'master'的差异,右键单击'master'分支并选择“diff against current”。

不幸的是,它似乎不会很快出现在*nix发行版中。

你也可以使用Perforce中的免费P4Merge来做到这一点:

http://www.perforce.com/product/components/perforce-visual-merge-and-diff-tools

关于将其与Git集成的详细信息可以在这里和这里找到

但从以上链接中快速总结如下:

在~/中放入以下位。然后你可以用$ git mergetool和$ git difftool来使用p4merge 注意$ git diff仍然会使用默认的内联diff查看器:)(git版本1.8.2测试)

.gitconfig的更改

[merge]
  keepBackup = false
    tool = p4merge
[mergetool "p4merge"]
    cmd = /Applications/p4merge.app/Contents/Resources/launchp4merge "\"$PWD/$BASE\"" "\"$PWD/$REMOTE\"" "\"$PWD/$LOCAL\"" "\"$PWD/$MERGED\""
    keepTemporaries = false
    trustExitCode = false
    keepBackup = false
[diff]
    tool = p4merge
[difftool "p4merge"]
    cmd = /Applications/p4merge.app/Contents/Resources/launchp4merge "\"$REMOTE\"" "\"$LOCAL\""

使用带范围的git diff。

git diff branch1..branch2

这将比较每个分支的尖端。

如果你真的想要一些GUI软件,你可以尝试一些像SourceTree这样支持Mac OS X和Windows的软件。

为了看到两个分支之间所有差异的可视化差异,我喜欢合并两个分支-不提交合并-然后使用git gui或git Extensions来获得差异的概述。

Git命令行用于合并而不提交:

git checkout branchA
git merge --no-commit --no-ff branchB

完成后,可以撤消与的合并

git merge --abort

(h/t @jcugat’s的评论)

尝试“difftool”(假设你有diff工具设置)-见https://www.kernel.org/pub/software/scm/git/docs/git-difftool.html

我发现名称状态良好的摘要,但difftool将迭代的变化(和-d选项给你的目录视图),例如。

$ git difftool their-branch my-branch

Viewing: 'file1.txt'
Launch 'bc3' [Y/n]:
...

或者像@rsilva4提到的-d和默认到你当前的分支,它只是-例如比较到master:

$  git difftool -d master..

...是的,有很多变体——https://www.kernel.org/pub/software/scm/git/docs/git-reset.html