如何打印存储在 .git 文件夹中的 Git 对象的内容?

bol*_*est 5 git

以下命令不会产生相同的输出:

cat .git/objects/96/d0745960850e8ac97406311f3288b6d035cefc
git show --raw 96d0745960850e8ac97406311f3288b6d035cefc
Run Code Online (Sandbox Code Playgroud)

我已经尝试了各种选项git showgit cat-file,但我似乎无法让事情匹配。我觉得应该以某种方式支持这一点。

具体来说,我想要文档格式。也就是说,我希望看到标题、空字节等。

如果我运行:

cat .git/objects/96/d0745960850e8ac97406311f3288b6d035cefc | zlib-deflate | hexdump
Run Code Online (Sandbox Code Playgroud)

我看到该行开头为:

0000000 62 6c 6f 62
Run Code Online (Sandbox Code Playgroud)

正如我所期望的那样,它对应于“b”“l”“o”“b”。

如果你好奇,我的zlib-deflate脚本的内容是:

#!/usr/bin/env python

# Deflates a stream of bytes compressed via zlib that are passed to stdin.

import io
import sys
import zlib

# /sf/ask/424562141/
reader = io.open(sys.stdin.fileno(), mode='rb', closefd=False)
data = reader.read()
print zlib.decompress(data)
Run Code Online (Sandbox Code Playgroud)