我有一个git diff输出,包含这样的行:index 0056c73..92c6cbd 100644
用于每个文件。我知道它来自哪个存储库,但遗憾的是它不知道它正在诋毁哪个版本的存储库。
如何找到diff所针对的存储库的提交?
或者,如何找到diff中前映像哈希对应的每个文件的确切提交? (即上述示例中哪个版本的文件具有0056c73
哈希)
答案 0 :(得分:3)
如果您知道文件的路径,则可以开始显示所述路径的所有提交:
git log --all --pretty=format:%H <path>
如果0056c73
是该文件的blob SHA1,git ls-tree
将打印所有条目SHA1,您可以grep你所追求的那个。
“Which commit has this blob?”从aragaer
提出这个单行git log --all --pretty=format:%H <path> | xargs -n1 -I% sh -c "git ls-tree % <path> | grep -q <hash> && echo %"
(将<hash>
替换为0056c73
)
正如我在“Which commit has this blob?”中提到的,使用Git 2.16 +(2017年12月),您可以使用:
git describe
git log --oneline --find-object(=...)
答案 1 :(得分:1)
正如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
标志来调整关闭标签的友好查找,而不是仅显示提交哈希...