簡體   English   中英

如何通過文件哈希從git存儲庫中查找文件修訂或提交?

[英]How to find file revision or commit from git repository by a file hash?

我有一個git diff輸出,包含這樣的行:每個文件的index 0056c73..92c6cbd 100644 我知道它來自哪個存儲庫,但遺憾的是它不知道它所針對的存儲庫的哪個版本

如何找到diff所針對的存儲庫的提交?

或者,如何找到diff中前映像哈希對應的每個文件的確切提交? (即上面示例中哪個版本的文件具有0056c73哈希)

如果您知道文件的路徑,則可以開始顯示所述路徑的所有提交:

git log --all --pretty=format:%H <path>

如果0056c73是該文件的blob SHA1, git ls-tree將打印所有條目SHA1,您可以grep你所追求的那個。

這個blob有哪個提交?aragaer提出了這個單行

git log --all --pretty=format:%H <path> | xargs -n1 -I% sh -c "git ls-tree % <path> | grep -q <hash> && echo %"

(用0056c73替換<hash>

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

正如https://stackoverflow.com/a/48027778/239657中所述 ,自Git 2.16(2018年第一季度)以來,您只需運行git describe 0056c73 另一個回購的示例:

$ git show d69fe27cf937398fa2bf6813674a3975bfe56e89 | grep e1cfe5
index 6e180f8221..e1cfe56bf6 100755
$ git describe e1cfe56bf6
1.1.0.Beta2-7645-gd69fe27cf9:adapters/oidc/js/src/main/resources/keycloak.js
$ git describe e1cfe56bf6 --abbrev=40
1.1.0.Beta2-7645-gd69fe27cf937398fa2bf6813674a3975bfe56e89:adapters/oidc/js/src/main/resources/keycloak.js

你可以使用git describe標志來調整close標簽的友好查找,只顯示提交哈希...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM