Git log alias - fatal: argomento ambiguo '% ad': revisione o percorso sconosciuti


10

Sto cercando di usare l' alias di log di Git Immersion :

[alias]
    hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short

ma Git risponde

fatal: ambiguous argument '%ad': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions

usando v1.6.1. Finora ho fatto solo due commit sul master e uno su un ramo. Questo alias funziona per me altrove, quale potrebbe essere il problema su questa macchina particolare?

Modifica - Sulla base del suggerimento di lesmana di seguito, sono stato in grado di determinare che in qualche modo le barre rovesciate sulle virgolette erano state eliminate dopo aver incollato la riga in PuTTY. Ottengo l'errore sopra riportato quando utilizzo "invece di \".

Risposte:


17

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 logriceve 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 %adviene 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.


1
Hai documentazione per questo? Per me almeno è il contrario.
mer

@wes: collegamento aggiunto alla documentazione. Riscrivi la risposta.
lesmana,

5
Ho dovuto sostituire le virgolette doppie con virgolette singole per far funzionare il seguente con git 1.7.5.1 in OSX:[alias] lg = log --graph --pretty='format:%C(yellow)%h %Creset%s%Cred%d'
user229044
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.