从完整的哈希值中获取 Git 简短哈希值。

74

我有一个常规的长SHA-1哈希字符串。 我想要获得其最短且不含歧义的SHA-1哈希字符串版本。 也就是说,使用git log -1 --pretty=format:%h命令获取的哈希字符串,假设长哈希字符串是指最后一次提交。


1
可能是获取短git版本哈希的重复问题。 - Robie Basak
2个回答

113

SHA1最短长度为4。使用rev parse命令默认会返回7位的SHA1,可通过--short选项获得。

git rev-parse --short 921103db8259eb9de72f42db8b939895f5651489
921103d

要想获得最短且无歧义的SHA1哈希值,你需要在短选项中指定数字4:

git rev-parse --short=4 921103db8259eb9de72f42db8b939895f5651489
92110
您还可以在core.abbrev配置变量中设置它。

3
如果你明确说明有多短,可能会损害其不含糊性,我的理解正确吗? - Omer Dagan
16
不,它会找到最短的SHA1,但仍然是唯一的。正如你在我的例子中看到的,即使我指定长度为4,SHA1的长度也为5。 - cexbrayat
9
未来的提交可能会使其含义变得模糊。 - meawoppl
如果您希望将提交 ID 保存以备将来使用,那么您真的应该使用比最短可能更长的 ID。即使是一个微小的代码库也会很快积累大量重复的 4 个字符的提交 ID。我编写了一个脚本来测试这一点,在仅有几百个提交之后,通常会出现几个 4 个字符的重复 ID。 - avl_sweden
如果你想获取当前的短哈希,请使用:git rev-parse --short HEAD - Tim Visée
显示剩余2条评论

22
$ git rev-parse --short 1a6f39665adf05810f70b37ef6470bbcf61fcd38
1a6f396

5
这种极简回答问题的方式有其优点。我认为这比常规答案更为直接。 - ijoseph
1
在答案中添加大量的废话会让你看起来更聪明。 - raine

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接