0

我有一个从 git 导出的目录。我想找到导出的代码的提交哈希。

我的第一个倾向是这样的:

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

但我不太确定我将如何在现实中解决这个问题,或者是否有更简单的方法

4

1 回答 1

0

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

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

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

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

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

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

于 2013-05-28T14:49:12.503 回答