Voici la source du message d'erreur:
$ git log %ad
fatal: ambiguous argument '%ad': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions
Vous obtiendrez le même message d'erreur à partir des deux commandes suivantes:
$ git log --pretty=format:%h %ad | %s%d [%an] --graph --date=short
$ git log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short
Le problème est que git log
reçoit les deux arguments suivants: --pretty=format:%h
(ou --pretty=format:\"%h
) et %ad
. Le reste, au moins lorsqu'il est exécuté directement en tant que commande dans bash, est un canal vers la commande %s%d
, qui n'existe généralement pas. Le message d'erreur complet sur mon système ressemble donc à ceci:
$ git log --pretty=format:%h %ad | %s%d [%an] --graph --date=short
bash: %s%d: command not found
fatal: ambiguous argument '%ad': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions
Tout cela démontre que la citation s'est en quelque sorte perdue et %ad
est interprétée comme un paramètre pour git log. Pour éviter cela, vous devez trouver la combinaison correcte de guillemets et d'échappement afin que la chaîne de format soit correctement citée au moment de l'exécution.
Le manuel de configuration de git sur les alias et les citations:
Les arguments sont divisés par des espaces, les citations et les échappements habituels du shell sont pris en charge. une paire de guillemets et une barre oblique inversée peuvent être utilisés pour les citer.
À partir de cette ligne, je n'ai pas pu comprendre comment fonctionnent les citations et les échappements. J'ai essayé une combinaison de citation et d'échappatoire dans l'alias, mais je n'ai pas pu donner de sens à cela.
Les lignes suivantes que vous avez postées dans votre question fonctionnent bien sur mon système:
[alias]
hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short
Vous devrez expérimenter pour obtenir la bonne combinaison sur votre système tout en utilisant PuTTY et tout.