Se cee157
pode se referir a 2 IDs de confirmação diferentes, como
cee157eb799af829a9a0c42c0915f55cd29818d4
e cee1577fecf6fc5369a80bd6e926ac5f864a754b
o Git vai me avisar se eu digitar git log cee157
? (ou Git 1.8.5.2 (Apple Git-48) permite que eu digite git log cee1
).
Eu acho que deveria, apesar de não encontrar nenhuma fonte autorizada que afirme que sim.
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".git log c
... e veja.git log abc
dizfatal: ambiguous argument 'abc': unknown revision or path not in the working tree.
mesmo que eu tenha um SHA1 exclusivo começando comabc
. Não funciona com 1-2-3 dígitos, 4 parece ser o mínimo. Testado no Windows (1.8.1) e Mac (1.9.1).minimum_abbrev
um valor de4
.Respostas:
Deve dar-lhe algo como isto:
Acabei de testar isso em um repositório Git real, encontrando confirmações com prefixos duplicados como este:
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):
(Ambos
stderr
ativados. Na verdade, toda a saída está ativadastderr
, nada ativadostdout
.)Testado no Windows:
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!)fonte
O pôster original declara:
A fonte autorizada pode ser encontrada no código fonte
get_short_sha1()
,.Citando isto :
e isso :
Além disso, também existem testes para garantir que o recurso funcione conforme o esperado.
fonte