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

Posted

技术标签:

【中文标题】如何区分 GitHub 中的两个分支?【英文标题】:How can I diff two branches in GitHub? 【发布时间】:2017-09-19 00:30:05 【问题描述】:

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

我总是可以在控制台中执行 git diff ,但这确实不如它在 GitHub 的 Web UI 中显示的方式好且视觉清晰。有什么想法吗?

【问题讨论】:

你检查过这些slant.co/topics/1324/~diff-tools-for-git 【参考方案1】:

使用compare 功能来完成此操作。

【讨论】:

这非常有用。同时,我不敢相信他们将这个奇妙的功能隐藏在文档中,而不是从项目主页提供指向它的链接。 有没有办法通过类似的命令来做到这一点?我试过 git compare branch_1 branch_2,但没有用 @Bremsstrahlung 是:git diff branch_1 branch_2 只需将 /compare 添加到您的 repo url 的末尾即可! 他们最近似乎放弃了这个。我现在找不到这样的东西。【参考方案2】:

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

单击它,您应该会被重定向到比较工具,您可以在其中选择要比较的分支或提交

2021 年 12 月更新

GitHub好像隐藏了这个选项,现在在“Contribute”下拉菜单后面:

【讨论】:

好的,有趣的是我在我们团队的 GitHub 门户上没有看到该选项,然后当我与 GitMaster 坐下来时,我意识到这是因为我们使用的 Git 版本是定制的,所以我们没有看到这个选项。但是,如果我浏览到下面提到的 URL,我可以比较这两个分支。问题是您的两个答案都非常有用,但我只能选择一个..困惑! 目前(2021 年 11 月)可以在“贡献”按钮下找到它。 @Radllaufer 当有一个打开的 PR 时,我似乎看不到 Contribute 按钮,如果它是一个与我想要比较的分支不同的分支的 PR,那将无济于事因为我只能查看 PR。我可能遗漏了一些东西,但这似乎是最近的变化,因为我并不总是遇到这个问题。 @regularmike 你仍然可以从不同的分支到达那里,然后选择打开 PR 的分支。不确定这是否能解决您的问题。可能值得将其作为一个问题提出。 @Radllaufer 我在他们的文档中找到的解决方案只是将 /compare 添加到 repo 路径,然后您可以选择两个分支。【参考方案3】:

扩展@Ari M 的答案。网址格式如下:

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

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

2 个点:显示 TARGET 有但 SOURCE 没有的所有提交,以及 SOURCE 有但 TARGET 没有的所有提交。

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

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

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

【讨论】:

【参考方案4】:

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

例如

分支 1

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

【讨论】:

这里的重点是在不创建 PR 的情况下进行比较,这样您就可以在不更改 repo 上的任何内容的情况下进行比较。【参考方案5】:

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

Intellij 有一个与分支比较的特性

右键项目->Git>与Branch比较。

文件列表会出现差异。

【讨论】:

【参考方案6】:

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

/compare/upstream...yourUserName:yourBranch

此外,为了在 Max Ivanov 的回答中添加从上面显而易见的内容,您还可以在 /compare 中指定其他人的 repo,采用通常的 GitHub 格式 userName:branchName

【讨论】:

以上是关于如何区分 GitHub 中的两个分支?的主要内容,如果未能解决你的问题,请参考以下文章

如何删除或替换 github 中的 master 分支?

恢复了来自 github 的拉取请求,但两个分支没有区别

如何将分支合并到 github 中的 master 中?

Git:如何区分不同分支中的两个不同文件?

GitHub:如何对存储库中的代码进行区分大小写的搜索?

github怎样创建gh-page