Berikut adalah sumber pesan kesalahan:
$ git log %ad
fatal: ambiguous argument '%ad': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions
Anda akan mendapatkan pesan kesalahan yang sama dari dua perintah berikut:
$ git log --pretty=format:%h %ad | %s%d [%an] --graph --date=short
$ git log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short
Masalahnya adalah yang git log
menerima dua argumen berikut: --pretty=format:%h
(atau --pretty=format:\"%h
) dan %ad
. Selebihnya, setidaknya ketika dieksekusi langsung sebagai perintah dalam bash, adalah pipa ke perintah %s%d
, yang biasanya tidak ada. Dengan demikian pesan kesalahan penuh pada sistem saya terlihat seperti ini:
$ 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
Semua ini menunjukkan bahwa kuotasi entah bagaimana tersesat dan %ad
ditafsirkan sebagai parameter untuk git log. Untuk mencegah itu Anda harus menemukan kombinasi yang benar dari kutipan dan melarikan diri sehingga string format dikutip dengan benar pada saat eksekusi.
Manual konfigurasi git tentang alias dan mengutip:
Argumen dipisah berdasarkan spasi, kutipan dan pelolosan shell yang biasa didukung. pasangan kutipan dan garis miring terbalik dapat digunakan untuk mengutipnya.
Dari baris ini saya tidak bisa mengetahui bagaimana cara mengutip dan melarikan diri. Saya mencoba beberapa kombinasi antara kutip dan lolos di alias tetapi tidak dapat memahaminya.
Baris berikut yang Anda poskan di pertanyaan Anda berfungsi dengan baik di sistem saya:
[alias]
hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short
Anda harus bereksperimen untuk mendapatkan kombinasi yang tepat pada sistem Anda saat menggunakan Putty dan semua.
[alias] lg = log --graph --pretty='format:%C(yellow)%h %Creset%s%Cred%d'