Hier ist die Quelle der Fehlermeldung:
$ git log %ad
fatal: ambiguous argument '%ad': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions
Sie erhalten dieselbe Fehlermeldung von den folgenden zwei Befehlen:
$ git log --pretty=format:%h %ad | %s%d [%an] --graph --date=short
$ git log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short
Das Problem ist, dass git log
die folgenden zwei Argumente empfangen werden: --pretty=format:%h
(oder --pretty=format:\"%h
) und %ad
. Der Rest ist, zumindest wenn er direkt als Befehl in bash ausgeführt wird, eine Pipe zum Befehl %s%d
, die normalerweise nicht vorhanden ist. Die vollständige Fehlermeldung auf meinem System sieht also folgendermaßen aus:
$ 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
All dies zeigt, dass das Zitat irgendwie verloren gegangen ist und %ad
als Parameter für das Git-Protokoll interpretiert wird. Um dies zu verhindern, müssen Sie die richtige Kombination aus Anführungszeichen und Escapezeichen finden, damit die Formatzeichenfolge zum Zeitpunkt der Ausführung korrekt in Anführungszeichen gesetzt wird.
Das git config - Handbuch über Alias und zitiert:
Argumente werden durch Leerzeichen getrennt, das übliche Shell-Zitieren und Escape wird unterstützt. Zitatpaar und ein Backslash können verwendet werden, um sie zu zitieren.
Aus dieser Zeile konnte ich nicht herausfinden, wie das Zitieren und Entkommen funktioniert. Ich habe eine Kombination aus Zitieren und Entkommen im Alias versucht, konnte aber keinen Sinn daraus machen.
Die folgenden Zeilen, die Sie in Ihrer Frage gepostet haben, funktionieren auf meinem System einwandfrei:
[alias]
hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short
Sie müssen experimentieren, um die richtige Kombination auf Ihrem System zu erhalten, während Sie PuTTY und alle verwenden.