如何在GitHub上区分两个分支?

224

我只是想知道是否有一种在GitHub中简单比较两个分支的方法?我知道GitHub有这个能力,因为当我们进行代码审查时,它会很好地列出所有的差异。我只是想知道是否有一种方法可以不需要任何代码审查,比较例如分支与分支或提交与提交?这样当我推送一些东西到我的远程分支并且在创建PR之前想要看看我的差异将会是什么样子,那么这将非常有帮助。

我可以随时进入控制台并执行git diff,但那真的不如在GitHub的Web UI中显示得清晰明了。有什么想法吗?


你有检查过这些 https://www.slant.co/topics/1324/~diff-tools-for-git 中的任何一个吗? - Eugene Komisarenko
8个回答

216

使用比较功能实现此目标。

要比较您的存储库的不同版本,请在您的存储库路径末尾添加/compare


32
很有用。但我无法相信他们把这个很棒的功能藏在文档里,而不是从项目主页提供链接。 - RayLuo
2
有没有办法通过命令行来做到这一点?我尝试了git compare branch_1 branch_2,但它没有起作用。 - Bremsstrahlung
7
@Bremsstrahlung 是的:git diff branch_1 branch_2 - Tim Peters
12
只需在您的存储库网址末尾添加“/compare”,即可到达目标页面! - Brad Parks
5
我刚刚使用了<repo>/compare/<branch_name>,它有效了。 - Wrench
显示剩余3条评论

81
如果您位于默认分支(通常为“master”)以外的任何分支上,您应该会看到一个指向“比较”的链接:compare

Compare 1

点击它,您应该被重定向到比较工具,在那里您可以选择要比较的分支或提交

Compare 2

2021年12月更新

GitHub似乎已经隐藏了此选项,现在它位于“贡献”下拉菜单中:

Screenshot of the "contribute" dropdown Screenshot after you click the "contribute" dropdown, showing the Compare button


好的,有趣的是我在我们团队的GitHub门户网站上没有看到这个选项,当我与我们的GitMaster坐下来时,我意识到这是因为我们使用的Git版本是定制的,所以我们没有看到这个选项。然而,如果我浏览下面提到的URL,我可以比较这两个分支。问题是你们两个的答案都非常有用,但我只能选择一个...有点困惑!! - Lost
1
目前(2021年11月),它可以在“贡献”按钮下找到。 - Radllaufer
@Radllaufer,当有一个开放的PR时,我似乎看不到“贡献”按钮,如果它是针对与我想要比较的分支不同的分支的PR,则无济于事,因为我只能查看PR。我可能错过了什么,但这似乎是最近的更改,因为我并不总是有这个问题。 - regularmike
@regularmike 你仍然可以从另一个分支进入,然后选择具有打开PR的分支。不确定这是否解决了你的问题。值得把它问成一个问题。 - Radllaufer
@Radllaufer,我在他们的文档中找到的解决方案只是在repo路径后面添加/compare,然后你就可以选择两个分支。 - regularmike

40
扩展@Ari M的答案。URL格式如下: https://<REPO URL>/compare/<SOURCE BRANCH OR COMMIT>...<TARGET BRANCH OR COMMIT> 注意.....(2个点和3个点)之间的区别2个点:显示TARGET拥有但SOURCE没有的所有提交以及SOURCE拥有但TARGET没有的提交。 3个点:显示TARGET拥有但SOURCE没有的所有提交。通常您会想要这个。 例如,要查看在linguist存储库中与master相比添加了什么内容:gh-pages分支: https://github.com/octocat/linguist/compare/master...gh-pages

只是一个小提示。如果分支名称包含斜杠,它也可以工作。例如:要比较 feature/JIRAID-123feature/JIRAID-789 分支,您可以使用 https://github.com/my-git-repo/compare/feature/JIRAID-123...feature/JIRAID-789 - elshev
我认为,当比较除主分支以外的其他分支时,两个点更符合人们的期望,因为三个点实际上是与合并基础进行比较。 - Catskul

3

在GitHub上还有另一种实现方式,只需尝试使用您想要比较的分支创建新的Pull Request。

例如

branch-1 <- branch-2 或者 branch-2 <- branch-1

在底部,您可以看到这些分支之间的文件和提交差异。 如果不想合并这两个分支,请勿创建Pull请求。


1
这里的重点是仅进行比较,而不创建PR,因此您可以在不更改存储库上的任何内容的情况下执行它。 - Lost

3

我在分支页面的顶部找到了该功能。

对我来说,它显示为“此分支领先开发分支 9 次提交。”,并带有一个链接。点击该链接会将我带到 github.com 网页上的比较分支功能。

link to github compare branches

当这个功能被隐藏在链接后面时,找到它并不直观或明显。

以后参考,比较功能位于提交的位置。导航到它们将带您到正确的位置。


1
这可能是一个省去打字的有用提示:只需将/compare添加到yourBranch的URL中,就会与上游仓库中的默认分支进行比较,即您最初派生的那个分支。基本上,它会自动生成一个重定向到类似以下内容的东西(请注意反转)
/compare/upstream...yourUserName:yourBranch

此外,补充Max Ivanov的回答中显而易见的一点,你也可以在常规的GitHub格式userName:branchName中指定其他人的仓库,将其添加到/compare中。请注意保留HTML标签。

0

前往 "分支"

enter image description here

点击“比较”

enter image description here

选择您想要比较的分支

enter image description here

选择您想要比较的分支

选择您想要比较的分支


0

对我们来说,比较选项被禁用了,git diff <branch-1> <branch-2> 返回逐行差异,这也会让人感到困惑。

Intellij 有一个与分支比较的功能

右键单击项目->Git>与分支比较。

将显示具有差异的文件列表。


你需要使用命令 'git diff -u <branch-1> <branch-2>' 来查看你熟悉的统一差异格式。 - eric.green

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