如何在 github 中比较同一分支上的两个不同提交?

在 GitHub 上比较同一个分支的历史对我来说非常困惑,我经常为此而挣扎:

如果我在 GitHub 回购名称后面的 URL 中使用 compare/master,我可以根据下拉菜单中的选项与回购中的其他分支进行比较。

Https://help.github.com/en/articles/comparing-commits-across-time

但是,我通常想比较几个提交在 master 上。

这是怎么容易做到的? 我可以得到一个更清楚的例子吗?

74071 次浏览

您链接的文章有关于 比较提交的说明。

GitHub 比较工具将接受任何 修订。分支,标记,提交 ID,甚至日期。如果要比较两次提交,请给它提交 ID。这是他们的例子.

您可以使用以下 URL 结构来比较同一分支中的提交:

github.com/<username>/<repo_name>/compare/<commit1>...<commit2>

usernamerepo_namecommit1(old commit)commit2(new commit)的值替换到您的项目。

两次提交之间的分隔符是 ...,即 3 dots

TLDR : 只需在 URL 的末尾添加 /compare即可。

您可以使用 GithubCompareUI,它将为您生成 URL。用值替换 ORGREPO。UI 只列出分支,但是您也可以输入任何有效的标记(例如 v1.0.0)或提交 ID (例如 1a2b3c)。

Https://github.com/org/repo/compare/

GitHub GUI showing compare options


生成的 URL 采用这种格式。您也可以使用 REF 手动编辑 URL。

Https://github.com/org/repo/compare/ref1...ref2

您也可以使用“2点”(直接差异) ,而不是“3点”(差异从最后一次常见提交)。

Https://github.com/org/repo/compare/ref1..ref2

如果要跨叉比较,则需要添加 ORG2:

Https://github.com/org/repo/compare/ref1...org2:ref2

有文件,但我不认为它是那么清楚: https://help.github.com/en/github/committing-changes-to-your-project/comparing-commits-across-time

查看分支或标记之间的区别

(如果没有发出请求,则分支)

备注:

  • (如果一个拉请求已经发出,你可以看到公关内部的变化,不再通过比较网址)

  • 您可以使用下拉列表选择不同的分支或标签: enter image description here

  • 处理好这个订单,例如 https://github.com/PyCQA/mccabe/compare/master...0.6.1不会给出结果

  • 你可以选择2-点(. .)或3-点(. .)符号

查看提交之间的区别:

只要转到 https://github.com/USERNAME/REPOSITORY_NAME/compare就可以得到比较页面

enter image description here

自定义标签。

看,我们可以向存储库添加一个比较“自定义选项卡”,这样我们就可以快速访问这个比较工具。

这就是方法。

  • 进入你的回购登陆页面
  • 点击“设置”标签。
  • 点击“自定义标签”。
  • 填写“新标签”名称。
  • 填写 URL 进行比较。 Https://github.com/ < 你的 ORG _ NAME >/< 你的 REPO _ NAME >/比较
  • 点击“添加标签”按钮

现在转到你的回购登陆页面,你现在应该看到你新创建的自定义选项卡与其他默认选项卡(拉请求,设置等)

如果您需要比较一个分支内不同日期的更改,您可以这样做:

https://github.com/<ORG_NAME>/<REPO_NAME>/compare/HEAD..HEAD@{4 weeks ago}
https://github.com/<ORG_NAME>/<REPO_NAME>/compare/HEAD@{1 week ago}..HEAD@{2021-06-01}