如何通过文件哈希从git存储库查找文件修订或提交?

Ale*_*x I 5 git hash

我有一个git diff输出,其中包含这样的行:index 0056c73..92c6cbd 100644每个文件。我知道它来自哪个存储库,但是不幸的是不知道针对哪个版本的存储库

如何找到差异所针对的存储库的提交?

或者,如何找到diff中的映像前哈希对应的每个文件的确切提交?(即,0056c73在上面的示例中,哪个版本的文件具有哈希值)

Von*_*onC 3

如果您知道文件的路径,则可以开始显示该路径的所有提交:

git log --all --pretty=format:%H <path>
Run Code Online (Sandbox Code Playgroud)

如果0056c73是该文件的 blob SHA1,则 agit ls-tree将打印所有 SHA1 条目,并且您可以 grep 所查找的条目。

哪个提交有这个斑点? ” aragaer提出了这样的一句话:

git log --all --pretty=format:%H <path> | xargs -n1 -I% sh -c "git ls-tree % <path> | grep -q <hash> && echo %"
Run Code Online (Sandbox Code Playgroud)

<hash>用。。。来代替0056c73

正如我在“哪个提交有这个 blob? ”中提到的,使用 Git 2.16+(2017 年 12 月),您可以使用: