Ecco la fonte del messaggio di errore:
$ git log %ad
fatal: ambiguous argument '%ad': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions
Otterrai lo stesso messaggio di errore dai due comandi seguenti:
$ git log --pretty=format:%h %ad | %s%d [%an] --graph --date=short
$ git log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short
Il problema è che git log
riceve i seguenti due argomenti: --pretty=format:%h
(o --pretty=format:\"%h
) e %ad
. Il resto, almeno quando eseguito direttamente come comando in bash, è una pipe per il comando %s%d
, che di solito non esiste. Il messaggio di errore completo sul mio sistema è quindi simile al seguente:
$ 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
Tutto ciò dimostra che la quotazione si è in qualche modo persa e %ad
viene interpretata come un parametro per git log. Per evitare che sia necessario trovare la combinazione corretta di quotazione e escape in modo che la stringa di formato sia quotata correttamente al momento dell'esecuzione.
Il manuale di configurazione di git su alias e quotazione:
Gli argomenti sono divisi per spazi, sono supportate le consuete quotazioni e escape della shell. virgolette e una barra rovesciata possono essere utilizzate per quotarle.
Da questa linea non sono riuscito a capire come funzionano le quotazioni e la fuga. Ho provato a combinare citazioni e scappare con lo pseudonimo ma non sono riuscito a ricavarne alcun senso.
Le seguenti righe che hai pubblicato nella tua domanda funzionano bene sul mio sistema:
[alias]
hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short
Dovrai sperimentare per ottenere la giusta combinazione sul tuo sistema mentre usi PuTTY e tutti.