只给出一个文件版本的Git提交

时间:2016-08-12 20:51:44

标签: git

如果您只有一个文件(仅包含文本数据),您如何确定它映射到的历史记录中的哪个提交?

当有人将一部分文件从存储库中删除并将其转储到某个地方时,这对于查找项目版本非常有用。

1 个答案:

答案 0 :(得分:2)

1)迭代存储库中的所有对象(.git/objects/*),将每个文件(使用git cat-file)与给定文件区分开来

2)当您找到与输入文件匹配的对象的SHA时,找到包含该文件的SHA的提交。迭代所有提交并使用git ls-tree | grep查找包含该对象的提交。

我将此解决方案整合到一个简单易用的脚本中: https://gist.github.com/themattman/20ec6da84304740972e057c22b15c0ee