Wenn cee157
kann auf 2 verschiedene Commit-IDs verweisen, wie z
cee157eb799af829a9a0c42c0915f55cd29818d4
und cee1577fecf6fc5369a80bd6e926ac5f864a754b
Wird Git mich warnen, wenn ich tippe git log cee157
? (oder Git 1.8.5.2 (Apple Git-48) ermöglicht mir das Eingeben git log cee1
).
Ich denke, es sollte, obwohl ich keine maßgebliche Quelle finden kann, die dies verspricht.
man gitrevisions
, was zumindest impliziert, dass eine Warnung ausgegeben wird, da angegeben wird, dass Sie eine Revision mit ihrem vollständigen SHA1-1-Namen oder "einem führenden Teilstring, der innerhalb des Repositorys eindeutig ist" benennen können.git log c
... und sehen Sie.git log abc
sagtfatal: ambiguous argument 'abc': unknown revision or path not in the working tree.
auch wenn ich einen einzigartigen SHA1 habe, der mit beginntabc
. Funktioniert nicht mit 1-2-3 Ziffern, 4 scheint das Minimum zu sein. Getestet in Windows (1.8.1) und Mac (1.9.1).minimum_abbrev
auf einen Wert von4
.Antworten:
Es sollte Ihnen so etwas geben:
Ich habe dies gerade in einem echten Git-Repository getestet, indem ich Commits mit doppelten Präfixen wie diesem gefunden habe:
Dies nimmt die Liste der Revisionen auf
master
, schneidet die ersten 4 Zeichen aus und wirft den Rest weg, zählt die Duplikate und sortiert numerisch. In meinem relativ kleinen Repository mit ~ 1500 Commits habe ich einige Revisionen mit einem gemeinsamen 4-stelligen Präfix gefunden. Ich habe ein 4-stelliges Präfix gewählt, da dies die kürzeste legale Länge zu sein scheint, die von Git unterstützt wird. (Funktioniert nicht mit 3 oder weniger Ziffern, auch wenn dies nicht mehrdeutig ist.)Übrigens war dies kein Tippfehler, ich weiß nicht, warum die Fehlermeldung über mehrdeutiges SHA1 zweimal erscheint, unabhängig von der Anzahl der doppelten SHA1 (versucht mit 2 und 3):
(Beide eingeschaltet
stderr
. Eigentlich ist der gesamte Ausgang eingeschaltetstderr
, nichts eingeschaltetstdout
.)In Windows getestet:
Ich denke , es ist sicher zu sagen , dass , wenn Ihre Version> = 1.8.1, Git werden Sie von Duplikaten warnen. (Es wird sich weigern, mit Duplikaten zu arbeiten.) Ich würde vermuten, dass viel ältere Versionen auch so funktionierten.
AKTUALISIEREN
Wenn Sie dies testen, benötigen Sie aufgrund von
int minimum_abbrev = 4
in environment.c mindestens 4-stelliges SHA1 . (Danke @devnull für den Hinweis!)quelle
Das Originalplakat besagt:
Die maßgebliche Quelle finden Sie im Quellcode
get_short_sha1()
.Zitiert dies :
und das :
Darüber hinaus gibt es auch Tests , um sicherzustellen, dass die Funktion wie erwartet funktioniert.
quelle