Powinien dać ci coś takiego:
$ 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>...]'
Właśnie przetestowałem to na prawdziwym repozytorium Git, znajdując zatwierdzenia ze zduplikowanymi przedrostkami, takimi jak ten:
git rev-list master | cut -c-4 | sort | uniq -c | sort -nr | head
Spowoduje to pobranie listy wersji master, wycięcie pierwszych 4 znaków i wyrzucenie pozostałych, policzenie duplikatów i posortowanie numeryczne. W moim stosunkowo małym repozytorium ~ 1500 zatwierdzeń znalazłem sporo wersji ze wspólnym 4-cyfrowym prefiksem. Wybrałem 4-cyfrowy prefiks, ponieważ wydaje się, że jest to najkrótsza dozwolona długość obsługiwana przez Git. (Nie działa z 3 cyframi lub mniej, nawet jeśli nie jest niejednoznaczne.)
Btw to nie była literówka, nie wiem, dlaczego komunikat o błędzie o niejednoznacznym SHA1 pojawia się dwukrotnie, niezależnie od liczby duplikatów SHA1 (próbowano z 2 i 3):
error: short SHA1 cee157 is ambiguous.
error: short SHA1 cee157 is ambiguous.
(Obie włączone stderr. Właściwie całe wyjście jest włączone stderr, nic nie jest włączone stdout.)
Przetestowano w systemie Windows:
$ git --version
git version 1.8.1.msysgit.1
Myślę, że to na pewno powiedzieć, że jeśli wersja jest> = 1.8.1, Git będzie ostrzegać duplikatów. (Odmówi działania z duplikatami.) Myślę, że dużo starsze wersje też działały w ten sposób.
AKTUALIZACJA
Podczas testowania potrzebujesz co najmniej 4-cyfrowego SHA1 ze względu int minimum_abbrev = 4na środowisko . C. (Dzięki @devnull za wskazanie tego!)
man gitrevisions, co przynajmniej oznacza ostrzeżenie, ponieważ stwierdza, że możesz nazwać wersję pełną nazwą SHA1-1 lub „wiodącym podciągiem, który jest unikalny w obrębie repozytorium”.