【问题标题】:Find a commit on GitHub given the commit hash给定提交哈希在 GitHub 上查找提交
【发布时间】:2012-08-26 05:40:12
【问题描述】:

我对 Github 还很陌生,遇到了一个业余问题。

我被要求进行代码审查并获得了提交哈希,但是我尝试在 Git 中查找是否可以使用提交哈希进行搜索但找不到任何东西。

有没有办法只使用提交哈希找到更改的代码?

【问题讨论】:

  • 我觉得非常奇怪的是 github 在搜索中不识别散列,如果有一个匹配该散列,则向您显示提交。
  • 其实@CraigRinger,github搜索会匹配哈希if they occur in a pull request。事实上,如果你愿意,你可以在整个 github 上搜索一个 7 个字符的哈希前缀。但它必须是一个拉取请求,而不是任何提交。
  • @ToddOwen 这很好,但不是重点。当您在该 repo 中搜索时,它应该匹配 repo 中的提交哈希,它确实不匹配。
  • @CraigRinger 现在终于可以了!见我的new answer。

标签: git github commit


【解决方案1】:

https://github.com/<owner>/<project>/commit/<hash> 形式的 URL 将显示该提交中引入的更改。例如,这是我最近对 ​​GitHub 上的一个项目所做的错误修复:

https://github.com/jerith666/git-graph/commit/35e32b6a00dec02ae7d7c45c6b7106779a124685

您还可以将散列缩短为任何唯一前缀,如下所示:

https://github.com/jerith666/git-graph/commit/35e32b


我知道您刚刚询问了 GitHub,但为了完整起见:如果您已从命令行签出存储库,则可以使用以下任一命令实现基本相同的操作(此处也可以使用唯一前缀):

git show 35e32b6a00dec02ae7d7c45c6b7106779a124685
git log -p -1 35e32b6a00dec02ae7d7c45c6b7106779a124685

注意:如果您将提交哈希缩短得太远,命令行会为您提供有用的消歧消息,但 GitHub 只会返回 404。

【讨论】:

  • 我在尝试跟踪 mongo 中的断言时遇到了这个问题,并发现有一个类似的 URL 模式可以查看特定文件,给定提交的哈希:github.com/$owner/$project/blob/$hash/path/to/file.ext - 例如github.com/mongodb/mongo/blob/…
  • 在此:git log -p -1 35e32b6a00dec02ae7d7c45c6b7106779a124685,-1 是必要的,否则它会显示所有较旧的提交;很高兴知道您可以使用哈希的四个初始数字(我的测试中的最小值),因为哈希没有自动完成;并且您不能像这样指定分支:git log master -p -1 35e3。 Git 版本:1.7.9.5。
  • 还有一个obs,但一个非常重要:同样,你不能指定一个分支,但是当你给出一个哈希时它会自动搜索本地和远程分支。所以,是的,您可以在通过命令行合并到本地仓库之前搜索特定的远程差异​​。
  • 如果有人想知道(我是!),这也适用于 github 上的前 8 个哈希:github.com/jerith666/git-graph/commit/35e32b6a 和命令行:git log -p -1 35e32b6a
  • UI 没有让这一切变得更简单,这有点愚蠢......我希望功能请求能够做到。
【解决方案2】:

search commits 的功能最近已添加到 GitHub。

要搜索哈希,只需在搜索框中输入至少前 7 个字符。然后在结果页面上,单击“提交”选项卡以查看匹配的提交(但仅在默认分支上,通常为 master),或单击“问题”选项卡以查看包含提交的拉取请求。

为了更明确,您可以在搜索中添加 hash: 前缀,但这并不是必需的。

还有一个REST API(在撰写本文时仍处于预览阶段)。

【讨论】:

  • 我很惊讶它实际上是这样工作的。这太不直观了。默认情况下,Github 将显示“代码”选项卡,其中显然没有结果。默认情况下,它不应该显示唯一包含任何结果的选项卡吗?
  • 所以要明确一点,如果你有自己的企业版 github,你可以通过搜索在任何 repo 中找到任何提交:https://YourGithubDomain/search?q=YOUR_COMMIT_HASH&type=Commits 请注意,我也在 Github 上尝试过,它也在那里工作,例如https://github.com/search?q=38db172d13962ea177c00c9a3b4b3169b317e94b&type=Commits
  • @Todd 我无法在我们的仓库中让它工作一次。不过,使用 URL 的其他解决方案效果很好。
【解决方案3】:

查看单个提交:
https://github.com/<user>/<project>/commit/<hash>

查看日志:
https://github.com/<user>/<project>/commits/<hash>

查看完整的仓库:
https://github.com/<user>/<project>/tree/<hash>

<hash> 可以是任意长度,只要它是唯一的。

【讨论】:

  • 如果长度至少为 7 个字符就可以了
  • 提交哈希的最小长度是 4 个字符(同样,只要它在整个存储库中是唯一的)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-21
  • 1970-01-01
  • 2021-11-11
  • 2014-10-29
  • 2023-03-27
  • 2021-10-22
  • 2018-06-19
相关资源
最近更新 更多