Penggunaan tanda seru dalam pesan Git commit melalui baris perintah

152

Bagaimana cara memasukkan tanda seru ke dalam pesan Git commit dari baris perintah?

Dimungkinkan untuk menghindari titik seru dengan backslash, tetapi kemudian backslash berakhir di pesan commit juga.

Saya ingin sesuatu seperti ini:

git commit -am "Nailed it!"
Daniel X Moore
sumber
6
Untuk penjelasan mengapa masalah ini ada di tempat pertama: askubuntu.com/questions/434832/…
Mark Amery

Jawaban:

226

Gunakan tanda kutip tunggal sebagai ganti tanda kutip ganda

git commit -am 'Nailed it!'

Atau, jika Anda perlu menggunakan tanda kutip ganda untuk alasan apa pun tetapi masih menginginkan literal !maka matikan ekspansi riwayat di bagian atas skrip Anda melaluiset +H

SiegeX
sumber
48
Atau cukup campur kutip Anda:git commit -am "$FOO: Nailed it"'!'
Cascabel
4
Ini tidak berfungsi untuk saya di OS X, jadi saya hanya menggunakan git commit(no -m) untuk membuka editor teks untuk pesan saya.
Kevin C.
Dalam OSX digunakan git commit -m "This is the best code ever"!seperti yang dijelaskan dalam @Ryan H. answer.
mljrg
42

Cara lain untuk menyelesaikannya adalah dengan menambahkan spasi setelah ! Suka:

git commit -am "Nailed it! "

Perhatikan jarak di antara ! dan yang terakhir " .

(Ruang tidak akan disertakan dalam pesan komit - Git memotong spasi spasi dari pesan komit secara otomatis.)

nicky_zs
sumber
3
Ini tampaknya solusi paling sederhana bagi saya, dan memungkinkan tanda kutip ganda dengan interpolasi variabel: git commit -m "$(sillyname) $(buzzphrase). $(superb)! ":)
Alex Hall
4

Tidak perlu mengingat tanda kutip atau lolos apa yang digunakan

  1. Ketikkan perintah Anda (atau sebagian darinya)
  2. Di baris perintah Anda, tekan Ctr X E»akan membuka" editor eksternal "Anda.
  3. Edit perintah Anda, dan tutup editor Anda.

... perintah akan dieksekusi & setiap karakter khusus akan muncul dengan benar di pesan Git commit!

(NB banyak kegunaan lain: mengetik perintah kompleks, menambahkan jeda baris dalam pesan komit Anda dll.)

PDK
sumber
4

Jika Anda perlu menggunakan tanda kutip ganda dan !merupakan karakter terakhir dalam pesan, simpan saja bagian !luar tanda kutip , karena kami hanya menggunakan tanda kutip sehingga spasi dimasukkan dalam pesan.

git commit -m "Reverting last commit because I don't like it"!

Jika Anda perlu memasukkan !mid string, Anda dapat menggunakan tanda kutip tunggal tetapi jika Anda perlu menggunakan tanda kutip tunggal literal, Anda harus menutup kutipan Anda, lalu letakkan bagian 'luar string dengan menghindarinya. Jadi, katakanlah pesan Anda adalah I don't like it! Reverting again!, ini dapat disusun dengan 'I don'+ \'+'t like it! Reverting again!'

git commit -m 'I don'\''t like it! Reverting again!'

Apa pun yang lebih rumit dari ini, Anda mungkin lebih baik git commitdan membiarkan git memanggil editor teks default Anda :)

Ryan H.
sumber
1

Anda juga dapat mengetik:

git commit -am "Nailed it
!
"

Jadi tekan saja enter dan letakkan tanda seru di baris baru, lalu tutup pesan komit. Menemukan itu keluar secara tidak sengaja suatu hari.

cg22
sumber
6
Ini akan menyisipkan baris baru literal sebelum tanda seru ke dalam pesan komit, yang jelek. -1.
Mark Amery
-3

Hmm. Melarikannya dengan garis miring tidak muncul di pesan komit untuk saya.

git commit -m "Nailed it\!"
Steve Geluso
sumber