Alias ​​log git - fatal: argumen ambigu '% iklan': revisi atau jalur yang tidak diketahui

10

Saya mencoba menggunakan log alias Git Immersion :

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

tapi Git merespons dengan

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

menggunakan v1.6.1. Sejauh ini yang saya lakukan adalah dua komitmen pada master, kemudian satu pada cabang. Alias ​​ini berfungsi untuk saya di tempat lain, apa yang bisa menjadi masalah pada mesin khusus ini?

Sunting - Berdasarkan saran lesmana di bawah ini, saya dapat menentukan bahwa entah bagaimana garis miring terbalik pada tanda kutip telah dilucuti setelah menempelkan garis di Putty. Saya mendapatkan kesalahan di atas saat menggunakan "bukan \".

kami
sumber

Jawaban:

17

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 logmenerima 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 %additafsirkan 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.

lesmana
sumber
1
Apakah Anda memiliki dokumentasi untuk ini? Bagi saya setidaknya itu sebaliknya.
wes
@wes: Menambahkan tautan ke dokumentasi. Tulis ulang jawaban.
lesmana
5
Saya harus mengganti tanda kutip ganda dengan tanda kutip tunggal untuk membuat karya berikut dengan git 1.7.5.1 di bawah OSX:[alias] lg = log --graph --pretty='format:%C(yellow)%h %Creset%s%Cred%d'
user229044