它应该给你这样的东西:
$ git log cee157
error: short SHA1 cee157 is ambiguous.
error: short SHA1 cee157 is ambiguous.
fatal: ambiguous argument 'cee157': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
我只是在一个真正的Git存储库上对此进行了测试,方法是查找具有重复前缀的提交,如下所示:
git rev-list master | cut -c-4 | sort | uniq -c | sort -nr | head
这将获取中的修订列表master,删去前4个字符,并丢弃其余的字符,计算重复项并按数字排序。在一个相对较小的约1500次提交的存储库中,我发现了很多带有共同的4位数字前缀的修订。我选择了4位数字的前缀,因为这似乎是Git支持的最短合法长度。(即使模棱两可,也不能使用3位数或更少的数字。)
顺便说一句,这不是一个错字,我不知道为什么关于歧义SHA1的错误消息会出现两次,而不管重复SHA1的数量如何(尝试使用2和3):
error: short SHA1 cee157 is ambiguous.
error: short SHA1 cee157 is ambiguous.
(两个都打开stderr。实际上整个输出都打开了stderr,什么都没有打开stdout。)
在Windows中测试:
$ git --version
git version 1.8.1.msysgit.1
我认为可以肯定地说,如果您的版本> = 1.8.1,Git 会警告您重复。(它将拒绝使用重复项进行操作。)我想许多较旧的版本也都可以这种方式工作。
更新
测试时,由于int minimum_abbrev = 4在environment.c中,您至少需要4位SHA1 。(感谢@devnull指出这一点!)
man gitrevisions,这至少意味着将发出警告,因为它指出您可以使用完整的SHA1-1名称或“存储库中唯一的前导子字符串”来命名修订。