git 个对象在磁盘上的存储位置的完整列表是什么?
What is the complete list of location where git objects are stored on disk?
我有一个 git 存储库,我正在尝试查找特定提交在磁盘上的存储位置。
git show <HASH>
显示提交。
git cat-file -p <HASH>
以原始形式显示提交。
- 提交不在
.git/objects/
. 下
- 提交不在
.git/lfs/objects/
下
- 里面没有命名
.git/packed-refs
grep -r <HASH>
和 find -name '*<PART_HASH>*'
没有任何结果。
问题:
- 我错过了什么位置?
- 是否有查找位置的命令?
Git 将对象作为松散对象存储在 .git/objects
的子目录下,或者作为压缩对象存储在 .git/objects/pack
的其中一个包中。打包对象可以更有效地存储它们,因为它们可以存储为与其他对象的增量(差异)。
如果要查找包含对象的包,可以通过将 .git/objects/pack
下的 .idx
文件之一传送到 git show-index
来列出相应的索引。这将列出相应包中包含的对象。
例如,在我的本地副本 git/git
:
$ git show-index < .git/objects/pack/pack-0ebde31e89dd275864d40ae21ad3228a9dc7d0ea.idx | \
head -n5
116264 0049c569260e2acbe490aabd267b233e9db28e8d (f0b1bf76)
182726 005e07db39e571eb3e73fbf7e4dbe5c67ad73e1e (29e2a47f)
99906 00c6aa0351c8d3abbcbee96d50cd7a359dd68a33 (e7952421)
477311 01724db3b51dc57d9e53e753148b5fbf548aa094 (0f597941)
186631 01b76e6be63bd19e446b3ede742bff887b7e81d5 (fd3f4a72)
中间部分是对象 ID,这可能就是您要查找的内容。
请注意 packed-refs
仅包含打包的引用;如果该对象不是任何 ref 的头部,则它不会出现在那里(或任何松散的 ref 文件中)。另请注意,核心 Git 不会在 .git/lfs/objects
下存储任何内容,并且 Git LFS 存储在那里的对象是完全独立于 Git 对象的对象,即使存储库正在对对象使用 SHA-256。
我有一个 git 存储库,我正在尝试查找特定提交在磁盘上的存储位置。
git show <HASH>
显示提交。git cat-file -p <HASH>
以原始形式显示提交。- 提交不在
.git/objects/
. 下
- 提交不在
.git/lfs/objects/
下
- 里面没有命名
.git/packed-refs
grep -r <HASH>
和find -name '*<PART_HASH>*'
没有任何结果。
问题:
- 我错过了什么位置?
- 是否有查找位置的命令?
Git 将对象作为松散对象存储在 .git/objects
的子目录下,或者作为压缩对象存储在 .git/objects/pack
的其中一个包中。打包对象可以更有效地存储它们,因为它们可以存储为与其他对象的增量(差异)。
如果要查找包含对象的包,可以通过将 .git/objects/pack
下的 .idx
文件之一传送到 git show-index
来列出相应的索引。这将列出相应包中包含的对象。
例如,在我的本地副本 git/git
:
$ git show-index < .git/objects/pack/pack-0ebde31e89dd275864d40ae21ad3228a9dc7d0ea.idx | \
head -n5
116264 0049c569260e2acbe490aabd267b233e9db28e8d (f0b1bf76)
182726 005e07db39e571eb3e73fbf7e4dbe5c67ad73e1e (29e2a47f)
99906 00c6aa0351c8d3abbcbee96d50cd7a359dd68a33 (e7952421)
477311 01724db3b51dc57d9e53e753148b5fbf548aa094 (0f597941)
186631 01b76e6be63bd19e446b3ede742bff887b7e81d5 (fd3f4a72)
中间部分是对象 ID,这可能就是您要查找的内容。
请注意 packed-refs
仅包含打包的引用;如果该对象不是任何 ref 的头部,则它不会出现在那里(或任何松散的 ref 文件中)。另请注意,核心 Git 不会在 .git/lfs/objects
下存储任何内容,并且 Git LFS 存储在那里的对象是完全独立于 Git 对象的对象,即使存储库正在对对象使用 SHA-256。