如何区分 GitHub 中的两个分支?

How can I diff two branches in GitHub?

我只是想知道是否有一种方法可以简单地区分 GitHub 中的两个分支?我知道 GitHub 有能力做到这一点,因为当我们进行代码审查时,它确实很好地列出了所有差异。我只是想知道是否有一种方法可以在不进行任何代码审查的情况下比较分支与分支或提交与提交?因此,当我将某些内容推送到我的远程分支时,我想在它创建 PR 之前查看我的差异看起来如何,这可能会非常有帮助。

我总是可以在控制台中进行 git 比较,但这确实不如它在 GitHub 的 Web UI 中显示的那样美观和清晰。有什么想法吗?

使用 compare 功能完成此操作。

To compare different versions of your repository, append /compare to your repository's path.

如果您在默认分支(通常是 'master')以外的任何分支上,您应该看到 link 到 compare:

单击它,您应该会被重定向到 compare-tool,您可以在其中 select 分支或提交以进行比较

2021 年 12 月更新

GitHub好像隐藏了这个选项,现在在“Contribute”后面drop-down:

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

例如

分支 1 <- 分支 2 要么 分支 2 <- 分支 1

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

扩展@Ari M 的回答。 URL格式如下:

https://<REPO URL>/compare/<SOURCE BRANCH OR COMMIT> ...<TARGET BRANCH OR COMMIT>

注意 ..... 之间的 difference(2 和 3 个点)。

2 点:显示所有 TARGET 有但 SOURCE 没有的提交和 SOURCE 有但 TARGET 没有的所有提交。

3 点:显示 TARGET 有但 SOURCE 没有的所有提交。 你通常想要这个。

例如与 linguist 回购中的 master 相比,查看 gh-pages 分支中添加的内容:

https://github.com/octocat/linguist/compare/master...gh-pages

对我们来说,比较选项被禁用,git diff <branch-1> <branch-2> returns 逐行差异,这也令人困惑。

Intellij 有一个功能可以与分支进行比较

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

文件列表将出现差异。

这可能是一个有用的提示,可以节省一些输入:只需将 /compare 添加到 yourBranch 的 URL 将与上游的默认分支 进行比较repo,即你最初分叉的那个。基本上它会自动生成一个重定向到类似的东西(注意反转)

/compare/upstream...yourUserName:yourBranch

此外,要在 Max Ivanov 的回答中添加一些从上面显而易见的内容,您还可以在 /compare 中以通常的 GitHub 格式 userName:branchName 指定其他人的回购协议。