Cela devrait vous donner quelque chose comme ceci:
$ 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>...]'
Je viens de tester cela sur un vrai dépôt Git, en trouvant des commits avec des préfixes en double comme celui-ci:
git rev-list master | cut -c-4 | sort | uniq -c | sort -nr | head
Cela prend la liste des révisions dans master
, supprime les 4 premiers caractères et jette le reste, compte les doublons et trie numériquement. Dans un mon référentiel relativement petit d'environ 1500 commits, j'ai trouvé pas mal de révisions avec un préfixe commun à 4 chiffres. J'ai choisi un préfixe à 4 chiffres car cela semble être la longueur légale la plus courte prise en charge par Git. (Ne fonctionne pas avec 3 chiffres ou moins, même s'il n'est pas ambigu.)
Btw ce n'était pas une faute de frappe, je ne sais pas pourquoi le message d'erreur concernant SHA1 ambigu apparaît deux fois, quel que soit le nombre de SHA1 en double (essayé avec 2 et 3):
error: short SHA1 cee157 is ambiguous.
error: short SHA1 cee157 is ambiguous.
(Les deux sont stderr
activés. En fait, toute la sortie est activée stderr
, rien n'est activé stdout
.)
Testé sous Windows:
$ git --version
git version 1.8.1.msysgit.1
Je pense qu'il est sûr de dire que si votre version est> = 1.8.1, Git va vous avertir des doublons. (Il refusera de fonctionner avec des doublons.) Je suppose que des versions beaucoup plus anciennes fonctionnaient également de cette façon.
METTRE À JOUR
Lors du test, vous avez besoin d'un minimum de SHA1 à 4 chiffres, à cause de int minimum_abbrev = 4
dans environment.c . (Merci @devnull pour l'avoir signalé!)
man gitrevisions
, ce qui implique au moins qu'un avertissement sera donné car il indique que vous pouvez nommer une révision avec son nom SHA1-1 complet ou "une sous-chaîne principale qui est unique dans le référentiel".