git show在一个特定的文件中返回’致命:坏对象’

我正在使用git show来检索在
Github上托管的特定修订版
elasticsearch上的文件内容.这是我在项目的根目录运行的git命令:

git show 63cbc8439357f496ce630c2eb35b2cf02342fa4b~1:rest-spec

但是,我收到以下错误:

fatal: bad object 63cbc8439357f496ce630c2eb35b2cf02342fa4b~1:rest-spec

rest-spec存在于版本63cbc8439357f496ce630c2eb35b2cf02342fa4b~1中,因为它在下一个版本中被更改.您可以在Github中看到下一个修订版here的更改,并使用以下命令使用我的本地克隆验证它:

git show 63cbc8439357f496ce630c2eb35b2cf02342fa4b

这是git show的输出(我只包括rest-spec的更改):

diff --git a/rest-spec b/rest-spec
deleted file mode 160000
index b3ab724..0000000
--- a/rest-spec
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit b3ab72486fae1b5c5a5397356a3e113bf72eb6d5

非常感谢您的帮助!

最佳答案 这是因为rest-spec是
elasticsearch存储库的子模块,因此不是属于(直接存储在)存储库中的对象.查看
tree of the 63cbc8439357f496ce630c2eb35b2cf02342fa4b~1 revision以确保rest-spec与其他对象不同.它通过
.gitmodules文件记录在elasticsearch存储库中,并且引用的存储库
elasticsearch-rest-api-spec的内容通过git子模块命令作为超级项目的工作树(即elasticsearch存储库)中的子目录提供.有关详细信息,请参阅
Submodules chapter in the Git Book
documentation of the git submodule command.

点赞