子模块提交对象'不是有效的对象名称'使用' git cat-file -p'

时间:2017-04-20 13:47:36

标签: git

我已经熟悉了git内部和不同的git对象。我有一个简单的存储库,顶部目录中有一个.txt文件,两个.txt文件(file1.txt和file2.txt)位于名为' my-directory'的目录中。和一个名为“我的子模块”的子模块。当我尝试运行$ git cat-file -p {submodule git commit object SHA-1}并且我无法弄清楚原因时,我收到错误消息。我正在显示我正在运行的所有命令,希望有人可以帮助我。

$ git cat-file -p master
tree fcc88590212b42b31803217036a93a9edfe4af1c
parent ae767cc2edd396e63f127d4f3354f769645a3dc4
author Martin
committer Martin

Awesome commit


$ git cat-file -p fcc88590212b42b31803217036a93a9edfe4af1c
100644 blob 21735012b86a0c6c266eb7fb629a777ca70848c1  my-file.txt
040000 tree 4df930165b3c59c0f5dc134ed76d889e4d177d2f my-directory
160000 commit 93a431b481f9ca2b498c94b0c0641e54f00322e0 my-submodule

$ git cat-file -p 21735012b86a0c6c266eb7fb629a777ca70848c1
This is the content of 'my-file.txt'

$ git cat-file -p 4df930165b3c59c0f5dc134ed76d889e4d177d2f 
100644 file1.txt
100644 file2.txt

$ git cat-file -p 93a431b481f9ca2b498c94b0c0641e54f00322e0
fatal: Not a valid object name 93a431b481f9ca2b498c94b0c0641e54f00322e0

1 个答案:

答案 0 :(得分:4)

cat-file显示来自当前存储库的对象,但是子模块是一个单独的存储库。因此,commit-id 93a43…是来自不同对象存储的提交。您应该导航到子模块的目录并从那里尝试:

$ cd my-submodule
$ git cat-file -p 93a431b481f9ca2b498c94b0c0641e54f00322e0

我想git可以确定特定的树条目是按对象类型的子模块。即如果条目类型是:

  • "斑点" - 它只是一个文件,
  • "树" - 它是一个子目录,
  • "提交"它是一个子模块。