GitHub上的tarball中出现意外的提交哈希

时间:2011-11-06 21:06:14

标签: git hash github

以下页面提供与标记89b734fd24对应的提交的简短哈希1.1.1https://github.com/jezdez/django_compressor/tree/1.1.1

但是,在以下tarball中,打包目录被称为jezdez-django_compressor-a66ab32https://nodeload.github.com/jezdez/django_compressor/tarball/1.1.1

通常,tarball中的短哈希与提交哈希匹配。 a66ab32来自哪里?

更新:似乎来自GitHub的人刚刚在tarball中修复了标签的哈希,现在它是一致的。至少,我不能再重现这个问题了。

UPDATE2:https://github.com/stefanfoulis/cmsplugin-filer/tree/0.8.0出现同样的问题,tarball包含stefanfoulis-cmsplugin-filer-f6c10c2(标记哈希),而提交哈希为3bbbd37

UPDATE3:

  • [22:16]取决于标签是否为轻量级标签
  • [22:16]轻量级标签是提交的指针,真正的标签有自己的sha / message / tagger与之关联
  • [22:17]另见:http://progit.org/book/ch2-6.html

2 个答案:

答案 0 :(得分:4)

哈希是标记的对象ID。很难找到这些标签的对象ID,但这是可能的。

$ git show-ref 1.1.1
a66ab32181a6597ec946423f2aecbde9ed113e93 refs/tags/1.1.1

$ git rev-parse 1.1.1
a66ab32181a6597ec946423f2aecbde9ed113e93

$ git show --pretty=raw 1.1.1
tag 1.1.1
Tagger: Jannis Leidel <jannis@leidel.info>

1.1.1 yeah!

commit 89b734fd24c9e172949cac6df29ea591a95f8aa3
tree 042332aaba8b325f9a65697de5c340919cc42f72
parent f226274e4e90c58956753bcd33a406a59e1b419a
parent d683e30dd146bb6db62934a6f561aea27fd84a06
author Jannis Leidel <jannis@leidel.info> 1320241044 +0100
committer Jannis Leidel <jannis@leidel.info> 1320241044 +0100

    Merge branch 'release/1.1.1'

zip具有提交的sha,目录具有实际标记对象的sha。

答案 1 :(得分:1)

不考虑第一个,我会说它可能是一个带注释的标签,也可能是签名。

这些是单独的对象,因此在git对象数据库中具有单独的对象id。标签指的是提交ID。 (看看你现在联系的回购)

编辑以下是发生的事情:

<强> git show a66ab32

tag 1.1.1
Tagger: Jannis Leidel <jannis@leidel.info>
Date:   Wed Nov 2 14:37:24 2011 +0100

1.1.1 yeah!

commit 89b734fd24c9e172949cac6df29ea591a95f8aa3
Merge: f226274 d683e30
Author: Jannis Leidel <jannis@leidel.info>
Date:   Wed Nov 2 14:37:24 2011 +0100

    Merge branch 'release/1.1.1'

所以你可以看到a66ab32命名标记,89b734fd24c9e17命名相应的提交