211

这个答案非常适合查看签入 git 的两个文件之间的视觉差异: How do I view 'git diff' output with a visual diff program?

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

git diff --name-status master dev

这不是很丰富,也不是很直观。

那里有更好的吗?

4

16 回答 16

232

git diff范围一起使用。

git diff branch1..branch2

这将比较每个分支的提示。

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

于 2012-10-16T10:50:30.163 回答
110

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

无需提交即可合并的 Git 命令行:

git checkout 分支A
git merge --no-commit --no-ff branchB

然后完成后,您可以撤消合并

git 合并 --abort

(h / t到@jcugat的评论)

于 2013-05-28T11:29:06.243 回答
61

如果您使用的是 Intellij Idea IDE,您可以只使用分支中的比较选项。

在此处输入图像描述

于 2013-12-05T08:24:05.227 回答
56

您也可以使用 gitk 轻松完成此操作。

> gitk branch1 branch2

首先单击 branch1 的尖端。现在右键单击 branch2 的尖端并选择 Diff this->selected。

于 2014-04-10T19:58:47.553 回答
34

对于那些在 Windows 上使用 TortoiseGit 的人,您可以通过这个相当晦涩的功能获得一些直观的比较:

  1. 导航到要比较的文件夹
  2. 按住shift并右键单击它
  3. 转到 TortoiseGit -> 浏览参考
  4. 用于ctrl选择两个分支进行比较
  5. 右键单击您的选择,然后单击“比较选定的参考”

资料来源:http ://wikgren.fi/compare-diff-branches-in-tortoise-git-or-how-to-preview-changes-before-doing-a-merge/

于 2015-01-26T17:39:47.750 回答
25

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

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

在此处输入图像描述

假设您已经检查了一个功能分支并且您想查看与“master”的差异,请右键单击“master”分支并选择“Diff against current”

不幸的是,它似乎不会很快在 *nix 发行版上可用。

于 2014-09-27T01:01:54.113 回答
17

尝试“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

于 2014-03-14T02:30:26.357 回答
9

GitExtensions 中,您可以通过按下选择修订网格中的两个分支Ctrl。然后您可以看到这些分支之间不同的文件。当您选择一个文件时,您会看到它的差异。

取自这里

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

右键菜单

然后您可以选择要比较的分支:

选择分支

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

差异视图

于 2014-09-24T17:38:03.730 回答
8

如果您使用的是 github,则可以使用该网站:

github.com/url/to/your/repo/compare/SHA_of_tip_of_one_branch...SHA_of_tip_of_another_branch

这将向您展示两者的比较。

于 2014-01-14T03:10:25.293 回答
7

更新

Mac:我现在使用 SourceTree。彻底推荐。我特别喜欢你可以上演/取消上演帅哥的方式。

Linux:我在以下方面取得了成功:

  • 聪明的
  • 吉特克拉肯
  • meld

例如smartgit在 Ubuntu 上安装:


这可以完成工作:

git-diffall 带有一个 GUI diff 工具,比如 meld。请参阅此处的第 5 点:

http://rubyglazed.com/post/15772234418/git-ify-your-command-line

这里有一篇关于 git 和融合的好文章:http: //nathanhoad.net/how-to-meld-for-git-diffs-in-ubuntu-hardy

于 2012-11-08T16:25:23.893 回答
4

如果您使用 Eclipse,您可以直观地将工作区中的当前分支与另一个标记/分支进行比较:

Eclipse 工作区比较

于 2014-08-22T06:56:09.803 回答
4

您也可以使用 Perforce 的免费 P4Merge 来执行此操作:

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

在此处输入图像描述

可以在此处此处找到有关将其与 Git 集成的详细信息

但上述链接的快速总结是:

  • 将以下位放入您的 ~/.gitconfig 中,然后您就可以$ git mergetool使用$ git difftoolp4merge
  • 请注意,$ git 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\""
于 2015-09-17T14:59:51.477 回答
2

看一下git show-branch

您可以使用核心 git 功能做很多事情。最好指定您希望在视觉差异中包含的内容。大多数答案都集中在提交的逐行差异上,您的示例侧重于给定提交中受影响的文件的名称。

一种似乎没有解决的视觉问题是如何查看分支包含的提交(无论是共同的还是唯一的)。

对于这个视觉效果,我非常喜欢git show-branch; 它打破了一个组织良好的提交表,每个分支返回到共同的祖先。- 要在具有多个分歧的分支的 repo 上尝试它,只需键入git show-branch并检查输出 - 有关示例的文章,请参阅比较 Git 分支之间的提交

于 2018-04-19T13:28:48.070 回答
2

如果您使用出色的 WebStorm 编辑器,您可以与您喜欢的任何分支进行比较:

Webstorm git 比较

于 2017-03-07T15:10:40.513 回答
0

以下是如何在 Visual Studio 中查看整个提交之间的视觉差异,而不是单个文件(在 VS 2017 中测试)。不幸的是,它仅适用于一个分支中的提交:在“团队资源管理器”中,选择“分支”视图,右键单击存储库,然后选择“查看历史记录”,如下图所示。

在此处输入图像描述

然后当前分支的历史出现在主区域。(在当前分支上以较早提交结束的分支由标签标记。)现在使用 Ctrl-Left 选择几个提交,然后右键单击并从弹出菜单中选择“比较提交...”。

有关比较 Microsoft 世界中的分支的更多信息,请参阅这个 stackoverflow 问题:使用 Visual Studio 的 git 分支之间的差异

于 2018-05-14T08:50:53.283 回答
0

您还可以使用 vscode 使用扩展 CodeLense 比较分支,这已经在这个 SO 中得到回答:如何比较 Visual Studio 代码上的不同分支

于 2019-12-16T14:40:48.990 回答