2016-08-12 42 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