如何解压缩单个git对象?

时间:2016-03-10 03:49:46

标签: git

answer to a question about the internal format of git’s tree objects中,为了获取存储在包中的一个特定树对象,我使用git unpack-objects解压缩了存储库包文件中的所有对象。这似乎有点矫枉过正。是的,我意识到git show --rawgit ls-treegit cat-file这样的命令会将关闭转换为内部格式。

如何以内部格式输出git输出单个对象 - 包括blobtreecommittag标头 - 无论是否为以松散或包装格式存储?

1 个答案:

答案 0 :(得分:5)

您可以先使用git pack-objects制作一个只有这一个对象的包。

另请注意,git unpack-objects不会提取存储库中已存在的对象,因此您可能希望创建一个新的存储库。总的来说这样的事情应该有效:

$ DIR=$(mktemp -d)
$ echo 5e98806c6cc246acef5f539ae191710a0c06ad3f \
   | git pack-objects --stdout \
   | ( cd "$DIR" && git init && git unpack-objects )

然后在$DIR/.git/objects

中查找解压缩的对象