我对Github相当陌生,遇到了一个业余的问题。

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

是否有一种方法,我可以通过使用提交哈希找到更改的代码?


当前回答

格式为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。

其他回答

使用GitHub CLI gh v2.22.0(2023年1月),您可以从本地克隆的GitHub存储库中搜索:

参见gh search commit:

例子:

# search commits matching hash "8dd03144ffdc6c0d486d6b705f9c7fba871ee7c3"
$ gh search commits --hash=8dd03144ffdc6c0d486d6b705f9c7fba871ee7c3

但也:

# search commits matching set of keywords "readme" and "typo"
$ gh search commits readme typo

# search commits matching phrase "bug fix"
$ gh search commits "bug fix"

# search commits committed by user "monalisa"
$ gh search commits --committer=monalisa

GitHub最近添加了搜索提交的功能。

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

为了更显式,您可以在搜索中添加hash:前缀,但这并不是真正必要的。

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

查看单次提交: https://github.com/ <用户名> / <项目> /提交/ <散列>

查看日志: 项目https://github.com/ <用户> / < > /提交/ <散列>

查看完整回购: 项目https://github.com/ <用户> / < > /树/ <散列>

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

格式为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。