如果您只有一个文件(仅包含文本数据),您如何确定它映射到的历史记录中的哪个提交?
当有人将一部分文件从存储库中删除并将其转储到某个地方时,这对于查找项目版本非常有用。
答案 0 :(得分:2)
1)迭代存储库中的所有对象(.git/objects/*
),将每个文件(使用git cat-file
)与给定文件区分开来
2)当您找到与输入文件匹配的对象的SHA时,找到包含该文件的SHA的提交。迭代所有提交并使用git ls-tree | grep
查找包含该对象的提交。
我将此解决方案整合到一个简单易用的脚本中: https://gist.github.com/themattman/20ec6da84304740972e057c22b15c0ee