【问题标题】:How do I unpack a single git object?如何解压单个 git 对象?
【发布时间】:2016-03-10 03:49:46
【问题描述】:

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 标头——无论它是以松散格式还是打包格式存储?

【问题讨论】:

  • 你可以在.git/objects中使用zpipe -d < <object>解压缩它
  • @AndrewC 是的,如果它已经是一个松散的物体,但如果它存在于一个包中呢?
  • Greg 我认为你的问题的前提是你已经打开了物品的包装并且有一个松散的物品。我不知道从包文件中执行此操作的答案,除非先解包。

标签: git


【解决方案1】:

您可以先使用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中寻找你解压的对象

【讨论】:

    猜你喜欢
    • 2013-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-27
    • 1970-01-01
    • 2017-08-05
    • 1970-01-01
    • 2015-11-25
    相关资源
    最近更新 更多