Git检出一个没有分支的提交

4

我已经将一个GitHub仓库克隆到了本地机器。 我想要我的本地仓库的状态反映特定提交时的状态,因此我的直觉是使用git checkout <commit>命令。 然而,这样做会导致错误:

fatal: reference is not a tree: 7aa823a959e1f50c0dab9e01c1940235eccc04cc

在GitHub上查看提交时会出现以下警告:

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

我的选择是什么?如果有帮助的话,GitHub存储库是Linux内核源代码树,相关提交是7aa823a959e1f50c0dab9e01c1940235eccc04cc


2
"reference is not a tree" 意味着您无法签出。使用 git cat-file -t 7aa823a959e1f50c0dab9e01c1940235eccc04cc 查看存储库中是否存在该对象(它可能不存在)。GitHub在Git的背后使用一些花哨的东西来将分叉的存储组合起来,这意味着有时您可以通过其Web界面“看到”实际上并不存在的提交。这似乎是这样一个情况。如果您能够找出哪个分支实际上持有该提交,那么您可以克隆该分支。 - torek
1个回答

3
显然,在GitHub Web界面上查看提交并不意味着提交存在于存储库中(因此会发出警告)。 我能够使用git cat-file -t <commit>确认我的存储库不包含相关的提交对象。 因此,我通过在GitHub上搜索适当的分支来解决我的问题。 感谢评论中torekElpieKay提供的帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接