Oto źródło komunikatu o błędzie:
$ git log %ad
fatal: ambiguous argument '%ad': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions
Otrzymasz ten sam komunikat o błędzie z następujących dwóch poleceń:
$ git log --pretty=format:%h %ad | %s%d [%an] --graph --date=short
$ git log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short
Problem polega na tym, że git log
otrzymuje dwa następujące argumenty: --pretty=format:%h
(lub --pretty=format:\"%h
) i %ad
. Reszta, przynajmniej gdy jest wykonywana bezpośrednio jako polecenie w bash, jest potokiem do polecenia %s%d
, które zwykle nie istnieje. Pełny komunikat o błędzie w moim systemie wygląda więc następująco:
$ 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
Wszystko to pokazuje, że cytowanie jakoś zgubiło się i %ad
jest interpretowane jako parametr git log. Aby temu zapobiec, musisz znaleźć poprawną kombinację cytowania i zmiany znaczenia, aby łańcuch formatu był cytowany poprawnie w momencie wykonywania.
Git config instrukcja o alias i cytuje:
Argumenty są podzielone na spacje, obsługiwane jest zwykłe cytowanie powłoki i zmiana znaczenia. do cytowania można użyć pary cudzysłowu i ukośnika odwrotnego.
Z tej linii nie byłem w stanie zrozumieć, jak działa cytowanie i ucieczka. Próbowałem kombinacji cytowania i ucieczki w aliasie, ale nie byłem w stanie tego zrozumieć.
Następujące wiersze, które opublikowałeś w swoim pytaniu, działają dobrze w moim systemie:
[alias]
hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short
Będziesz musiał eksperymentować, aby uzyskać odpowiednią kombinację w systemie podczas korzystania z PuTTY i wszystkich innych.
[alias] lg = log --graph --pretty='format:%C(yellow)%h %Creset%s%Cred%d'