Ответ 1
Он должен дать вам что-то вроде этого:
$ 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 коммитов я нашел немало изменений с общим четырехзначным префиксом. Я выбрал четырехзначный префикс, потому что это самая короткая юридическая длина, поддерживаемая Git. (Не работает с 3 цифрами или меньше, даже если не двусмысленно.)
Btw это не была опечатка, я не знаю, почему сообщение об ошибке с неоднозначным SHA1 появляется дважды, независимо от количества дубликатов SHA1 (с двумя и тремя):
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 предупредит вас о дубликатах. (Он откажется работать с дубликатами.) Я бы предположил, что многие старые версии тоже работали.
UPDATE
При тестировании этого вам требуется минимум 4-значный SHA1, из-за int minimum_abbrev = 4
в environment.c. (Спасибо @devnull за то, что указали это!)