给定提交哈希值,在GitHub上查找提交


286

我对Github相当陌生,遇到了业余爱好者的问题。

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

有没有一种方法可以仅通过使用提交哈希值来查找更改的代码?


46
我发现github无法识别搜索中的哈希值,并向您显示提交是否与哈希值匹配,这是非常奇怪的。
Craig Ringer

实际上,@ CraigRinger表示,如果在请求中出现哈希,则github搜索将匹配哈希。确实,如果愿意,您可以在整个github上搜索七个字符的哈希前缀。但这必须是请求请求,而不仅仅是任何提交。
托德·欧文

4
@ToddOwen很好,但不是重点。当您在该存储库中进行搜索时,它应该与该存储库中的提交哈希匹配,这确实很古怪,没有。
克雷格·林格

2
@CraigRinger现在开始了!看到我的新答案
托德·欧文

Answers:


378

表单的URL https://github.com/<owner>/<project>/commit/<hash>将向您显示该提交中引入的更改。例如,这是我对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/...
RubyTuesdayDONO

在:中git log -p -1 35e32b6a00dec02ae7d7c45c6b7106779a124685,这-1是必需的,因为否则它将显示所有较早的提交;很高兴知道您可以使用哈希的四个初始数字(我的测试中的最小值),因为哈希没有自动完成;并且您不能像这样指定分支:git log master -p -1 35e3。Git版本:1.7.9.5。
拉斐尔·巴罗斯

另外一个obs,但一个非常重要的问题:同样,您不能指定分支,但是当您提供哈希值时,它将自动搜索本地和远程分支。因此,是的,您可以在通过命令行合并到本地存储库之前搜索特定的远程差异​​。
拉斐尔·巴罗斯

1
万一有人想知道(我是!),它也可以在github:github.com/jerith666/git-graph/commit/35e32b6a和命令行上使用哈希的前8个:git log -p -1 35e32b6a
SimplGy,2014年

7
UI并没有使它变得比以前更简单,这有点愚蠢……我希望功能请求能够做到这一点。
ocroquette

49

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

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

查看完整回购​​:
https://github.com/<user>/<project>/tree/<hash>

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


1
如果长度至少为7个字符就可以了
Kasun Siyambalapitiya

3
提交哈希的最小长度为4个字符(同样,只要在整个存储库中是唯一的)
qwertzguy

21

对能力的搜索提交最近被添加到GitHub上。

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

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

还有一个REST API(在编写本文时仍处于预览状态)。


2
我很惊讶它实际上以这种方式工作。太不直观了。默认情况下,Github将显示“代码”选项卡,其中显然没有结果。默认情况下,它不应该显示唯一带有任何结果的选项卡吗?
Summerian

因此,要清楚一点,如果您有自己的github企业安装,则可以通过搜索来在任何存储库中找到任何提交,如下所示: https://YourGithubDomain/search?q=YOUR_COMMIT_HASH&type=Commits 请注意,我也在Github上尝试过,并且也可以在其中工作,例如 https://github.com/search?q=38db172d13962ea177c00c9a3b4b3169b317e94b&type=Commits
Brad Parks
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.