Deve dar-lhe algo como isto:
$ 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>...]'
Acabei de testar isso em um repositório Git real, encontrando confirmações com prefixos duplicados como este:
git rev-list master | cut -c-4 | sort | uniq -c | sort -nr | head
Isso pega a lista de revisões master
, corta os 4 primeiros caracteres e joga fora o resto, conta as duplicatas e classifica numericamente. Em um repositório relativamente pequeno de ~ 1500 confirmações, encontrei algumas revisões com um prefixo comum de 4 dígitos. Eu escolhi um prefixo de 4 dígitos porque esse parece ser o menor comprimento legal suportado pelo Git. (Não funciona com 3 dígitos ou menos, mesmo que não seja ambíguo.)
Btw não foi um erro de digitação, não sei por que a mensagem de erro sobre SHA1 ambíguo aparece duas vezes, independentemente do número de SHA1 duplicado (tentado com 2 e 3):
error: short SHA1 cee157 is ambiguous.
error: short SHA1 cee157 is ambiguous.
(Ambos stderr
ativados. Na verdade, toda a saída está ativada stderr
, nada ativado stdout
.)
Testado no Windows:
$ git --version
git version 1.8.1.msysgit.1
Eu acho que é seguro dizer que, se a sua versão é> = 1.8.1, Git irá avisá-lo de duplicatas. (Ele se recusará a operar com duplicatas.) Eu acho que versões muito mais antigas também funcionavam dessa maneira.
ATUALIZAR
Ao testar isso, você precisa de um mínimo de SHA1 de 4 dígitos, devido int minimum_abbrev = 4
ao ambiente.c . (Obrigado @devnull por apontar isso!)
man gitrevisions
, o que pelo menos implica em um aviso, será dado, uma vez que afirma que você pode nomear uma revisão com o nome completo do SHA1-1 ou "uma substring principal que é exclusiva no repositório".