![](/img/trans.png)
[英]After git cvsimport, how to map cvs file revision numbers to a git commit hash?
[英]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月),您可以使用:
git describe
git log --oneline --find-object(=...)
正如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.