Это должно дать вам что-то вроде этого:
$ 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 будет предупреждать вас о дубликатах. (Он откажется работать с дубликатами.) Я предполагаю, что более старые версии тоже работали таким образом.
ОБНОВИТЬ
При тестировании вам понадобится как минимум 4-значный SHA1 из-за int minimum_abbrev = 4in environment.c . (Спасибо @devnull за указание на это!)
man gitrevisions, что, по крайней мере, подразумевает, что будет выдано предупреждение, поскольку в нем говорится, что вы можете назвать ревизию ее полным именем SHA1-1 или «ведущей подстрокой, которая уникальна в репозитории».