【发布时间】:2018-03-23 18:56:41
【问题描述】:
我试图找出 git 将包含文件的 blob 存储在哪里。为此,我首先对我的 repo 进行最后一次提交的 git cat-file -p 。这告诉我树的位置,所以我对该哈希执行 ls-tree 并查看该最新提交中的所有文件 [和子树]。 ls-tree 命令输出的每一行都显示了权限、类型(blob 或树)、散列和文件(或目录,如果它是树)名称。
我的问题是在我的 .git/objects 目录中找不到此清单中显示的哈希值。我可以在 ls-tree 命令中对哈希执行 git cat-file -p ,它可以正确显示文件,但我找不到存储该文件的 blob。
我认为这里可能发生的情况是 ls-tree 中显示的哈希不是文件的哈希,而是文件哈希的哈希加上树对象中的其他信息 [如文件姓名]。如果是这种情况,我希望能够查看该树对象的“皮下”,以找到存储文件的 blob 的真正哈希。
这有可能吗??
我已经尝试过下面的第一个建议,但哈希值根本不存在。我不想尝试第二个,因为我不确定它是否会将材料重写到我的仓库中。
【问题讨论】:
-
如果哈希是
XYZ111...然后进入.git\objects,找到XY目录(哈希的前2个字符),然后在里面找到其余的,在这种情况下Z111.....看看有没有帮助。 -
它们要么在
.git/objects下作为松散对象,要么在.git/objects/pack作为打包对象。