如何查找已归档的存储库的提交哈希

时间:2013-05-28 14:27:17

标签: macos git diff

我有一个从git导出的目录。我想找到导出的代码的commithash。

我的第一个倾向是:

for each commit in repo:
  if diff(commit, export) is empty:
     return commit.hash

但我不太确定如何在现实中实现这一点,或者是否有更简单的方法

1 个答案:

答案 0 :(得分:0)

如果您使用git archive,则可以从存档的内容中恢复提交:

  

git archive在给定树ID时与给定时的行为不同   提交ID或标签ID。在第一种情况下,当前时间用作   存档中每个文件的修改时间。在后一种情况下   使用引用的提交对象中记录的提交时间   代替。此外,提交ID存储在全局扩展中   如果使用tar格式,则为pax标头;它可以使用git提取   得到焦油提交-ID。在ZIP文件中,它存储为文件注释。

因此,根据您创建存档的方式,您可以使用存档中文件的修改时间在该时间之前查找提交或直接访问提交ID。

如果您没有存档,请查看文件/存档的创建/修改日期。然后,返回存储库使用:

git log --before=<date> -n 1

在相关日期之前查看一次提交。