2016-08-12 39 views
3

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

当某人从存储库中撕掉一部分文件并将其转储到某处时,这对于查找项目版本很有用。

回答

2

1)通过在资源库中的所有对象与你指定的文件

2)当你发现输入文件相匹配的对象的SHA迭代(.git/objects/*),DIFF(使用git cat-file)的每个文件,找到包含该文件的SHA的提交。遍历所有提交并使用git ls-tree | grep来查找哪个提交包含该对象。

我巩固了该解决方案进到这里一个简单,易于运行脚本: https://gist.github.com/themattman/20ec6da84304740972e057c22b15c0ee

+2

可以简化步骤1中一个无回路:'哈希= $(GIT哈希对象-t BLOB文件)'。 ('-t blob'实际上是默认的,我只是为了明确而包含它。) – torek