Size şöyle bir şey vermeli:
$ 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>...]'
Bunu, aşağıdaki gibi yinelenen önekler içeren commit'leri bularak gerçek bir Git deposunda test ettim:
git rev-list master | cut -c-4 | sort | uniq -c | sort -nr | head
Bu, revizyonların listesini alır, masterilk 4 karakteri çıkarır ve geri kalanını atar, kopyaları sayar ve sayısal olarak sıralar. Nispeten küçük bir ~ 1500 işlemden oluşan depomda, yaygın bir 4 basamaklı önekle epeyce revizyon buldum. Git tarafından desteklenen en kısa yasal uzunluk olduğu için 4 basamaklı bir önek seçtim. (Belirsiz olmasa bile 3 basamak veya daha azıyla çalışmaz.)
Btw bu bir yazım hatası değildi, belirsiz SHA1 ile ilgili hata mesajının, yinelenen SHA1 sayısından bağımsız olarak neden iki kez göründüğünü bilmiyorum (2 ve 3 ile denendi):
error: short SHA1 cee157 is ambiguous.
error: short SHA1 cee157 is ambiguous.
(İkisi de açık stderr. Aslında çıktının tamamı açık stderr, hiçbir şey açık değil stdout.)
Windows'ta test edildi:
$ git --version
git version 1.8.1.msysgit.1
Sürümünüz> = 1.8.1 ise Git'in sizi kopyalar konusunda uyaracağını söylemenin güvenli olduğunu düşünüyorum . (Kopyalarla çalışmayı reddedecektir.) Tahmin ediyorum ki çok daha eski sürümler de bu şekilde çalışıyordu.
GÜNCELLEME
Bu test yaparken, çünkü, 4 basamaklı SHA1 en az gerekir int minimum_abbrev = 4içinde environment.c . ( Bunu belirttiğiniz için teşekkürler @ devnull !)
man gitrevisions, bu, en azından bir uyarının verileceğini ima eder, çünkü bir revizyonu tam SHA1-1 adıyla veya "havuz içinde benzersiz olan baştaki bir alt dizeyle" adlandırabileceğinizi belirtir.