Це має дати вам щось подібне:
$ 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 буде попереджати вас про дублікатах. (Він відмовиться працювати з дублікатами.) Я б здогадався, що набагато старіші версії працювали і таким чином.
ОНОВЛЕННЯ
При тестуванні цього вам потрібно мінімум чотиризначний SHA1, оскільки він int minimum_abbrev = 4знаходиться в середовищі.c . (Дякую @devnull за те, що вказав на це!)
man gitrevisions, що принаймні передбачає попередження, оскільки воно вказує, що ви можете назвати редакцію з повним ім'ям SHA1-1 або "провідним підрядком, унікальним у сховищі".