Sesuatu seperti GIT_EDITOR="emacs" git commit -m 'paragraph1' -m 'paragraph2' -eakan membantu Anda menghindari vim.
jotik
Jawaban:
694
Tentu saja, bagaimana ini dilakukan tergantung pada shell Anda. Di Bash, Anda dapat menggunakan tanda kutip tunggal di sekitar pesan dan membiarkan tanda kutip terbuka, yang akan membuat Bash meminta baris lain, sampai Anda menutup tanda kutip. Seperti ini:
git commit -m 'Message
goes
here'
Atau, Anda dapat menggunakan "dokumen di sini" (juga dikenal sebagai heredoc):
@Peter Farmer kemudian menjawab bahwa konvensi Git tampaknya seperti: 1 baris untuk ringkasan, dua baris, kemudian pesan terperinci.
Nick Spacek
4
Juga, lihat posting di bawah ini oleh @esse. Kembalinya kereta yang sederhana akan membantu.
Hakan Ensari
6
@MohamadAli, pada Windows, parsing commandline bekerja secara berbeda
Simon Richter
2
@KelvinShadewing, ya, tetapi dengan perbedaan yang berlaku aturan substitusi shell untuk pesan, jadi Anda perlu melarikan diri tanda dolar dan karakter metakarakter lainnya. Di sisi lain itu memungkinkan Anda untuk menggunakan variabel.
Simon Richter
2
@ Nikhil, banyak program mendukung tanda hubung tunggal sebagai nama file yang berarti stdin atau stdout. Dengan dokumen di sini , gitperintah dapat membaca teks pesan dari stdin, dan -Fopsi memberi nama file untuk membaca pesan.
Simon Richter
515
Jika Anda hanya ingin, katakanlah, baris utama dan baris konten, Anda dapat menggunakan:
git commit -m "My head line"-m "My content line."
Perhatikan bahwa ini membuat paragraf terpisah - bukan baris. Jadi akan ada garis kosong antara masing-masing dua -mgaris, misalnya:
Ini memiliki manfaat bekerja pada Windows di mana trik mengutip yang disebutkan di tempat lain tidak berfungsi. Pisahkan -muntuk setiap baris. Bagus!
ddotsenko
8
Pesan yang dibuat menggunakan metode ini ditampilkan dengan benar di GitHub, GitHub untuk Windows dan TortoiseGit.
Richard
12
@ddotsenko ini adalah manfaat dari bekerja di Linux / Mac, di mana kami memiliki shell yang layak =)
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
7
Dari man git commit: -m <msg>, --message = <msg> Gunakan <msg> yang diberikan sebagai pesan komit. Jika opsi multiple -m diberikan, nilainya akan digabungkan sebagai paragraf terpisah.
Amedee Van Gasse
55
Perhatikan bahwa ini membuat paragraf terpisah - bukan baris. Jadi akan ada garis kosong antara masing-masing dua -mgaris.
Ohad Schneider
398
Menggunakan Git dari baris perintah dengan Bash Anda dapat melakukan hal berikut:
git commit -m "this is
> a line
> with new lines
> maybe"
Cukup ketik dan tekan Enterketika Anda menginginkan baris baru, simbol ">" berarti Anda telah menekan Enter, dan ada baris baru. Jawaban lain juga berfungsi.
Jawaban Abizern menjelaskan mengapa hal ini berhasil - Bash shell menginterpretasikan kunci <kbd> Enter </kbd> sebagai baris baru hingga karakter kutipan ganda pertama 'tertutup' (dengan karakter kutipan ganda berikutnya).
Kenny Evitt
1
Saya harus setuju bahwa ini adalah solusi yang jauh lebih efektif, lebih mudah dan praktis daripada jawaban yang diterima. Ini bekerja dengan baik untuk saya menggunakan Git 1.8.2.1. +1 dari saya.
crmpicco
Ini bukan fungsi khusus dari tombol Enter , melainkan terkait dengan tanda kutip. Apakah Anda menggunakan tanda kutip ganda atau tunggal tidak terlalu penting, kecuali untuk ekspansi variabel dan keluar dari karakter khusus - itu sebabnya saya memilih tanda kutip tunggal dalam jawaban saya.
Simon Richter
2
Jangan gunakan ini di zsh! Terminal akan ditutup dan Anda kehilangan apa yang Anda ketikkan.
Kata-kata dalam bentuk $ ' string ' diperlakukan secara khusus. Kata diperluas ke
string , dengan karakter backslash-escaped diganti sebagaimana ditentukan oleh standar ANSI C.
Ini termasuk dukungan untuk baris baru seperti yang ditunjukkan di atas, ditambah kode hex dan Unicode dan lainnya. Buka bagian yang ditautkan untuk melihat daftar karakter yang lolos dari garis miring terbalik.
@rsy: Bash versi apa yang Anda gunakan? Apa yang Anda lihat saat melakukannya echo $'one\ntwo'?
Dijeda sampai pemberitahuan lebih lanjut.
1
rsy $ bash --versi GNU bash, versi 3.2.53 (1) -release (x86_64-apple-darwin13) Hak Cipta (C) 2007 Free Software Foundation, Inc. Output dari perintah itu, seperti yang diharapkan, ditampilkan dalam dua berbeda garis!
ccoutinho
untuk saya di windows 7 itu pilihan terbaik Terima kasih
Mohamad Ali
2
$ Adalah kunci di sini dan saya tidak melihatnya pada pandangan pertama. Kalau tidak, saya hanya mendapatkan \ n di tengah pesan saya.
ChrisBob
1
Anda bahkan tidak perlu menggunakan $ '...' untuk seluruh string; menggunakan ini hanya sekitar karakter baris baru akan bekerja: git commit -m "first line"$'\n'"second line". Perhatikan bahwa Anda harus menutup string sebelumnya sebelum memulai $'string'.
PlasmaBinturong
95
Menambahkan jeda baris ke komit Git Anda
Coba yang berikut ini untuk membuat pesan komit multi-baris:
git commit -m "Demonstrate multi-line commit message in Powershell"-m "Add a title to your commit after -m enclosed in quotes,
then add the body of your comment after a second -m.
Press ENTER before closing the quotes to add a line break.
Repeat as needed.
Then close the quotes and hit ENTER twice to apply the commit."
Kemudian verifikasi apa yang telah Anda lakukan:
git log -1
Anda harus berakhir dengan sesuatu seperti ini:
Tangkapan layar berasal dari contoh yang saya atur menggunakan PowerShell with Poshgit.
Jawaban yang luar biasa. Saya sudah mencari-cari sejak lama dan mencoba berbagai cara untuk memformat pesan komit Git saya, tetapi ini yang terbaik. Saya dapat mengkonfirmasi itu berfungsi pada prompt dengan Git 1.8.2.1.
crmpicco
1
Di Powershell Anda dapat melakukan `n untuk break line
Ecropolis
2
Ini sangat berhasil bagi saya di Git Bash untuk Windows .
Ulysses Alves
1
Ini harus menjadi jawaban yang dipilih karena ini adalah metode yang paling kompatibel, ini tidak bergantung pada prompt CLI tertentu seperti yang dilakukan beberapa saran lainnya ..
1
Ini adalah jawaban yang lebih baik dan harus dipilih sebagai jawabannya. Tidak hanya ini sejalan sebagai perilaku default, dan memberikan pesan komit jauh lebih bersih tetapi juga agak lebih fleksibel dengan multi-m. Juga meskipun terlihat khusus windows dan telah menarik komentar terkait windows, ia berfungsi dengan baik di Linux juga.
0xc0de
44
Melakukan sesuatu seperti
git commit -m"test\ntest"
tidak bekerja, tetapi sesuatu seperti
git commit -m"$(echo -e "test\ntest")"
bekerja, tapi itu tidak terlalu cantik. Anda mengatur git-commitlbperintah di PATHmana Anda melakukan sesuatu seperti ini:
Kata peringatan, saya merasa bahwa konvensi umum adalah memiliki garis ringkasan sebagai baris pertama, dan kemudian dua baris terputus, dan kemudian pesan yang diperluas dalam pesan komit, jadi melakukan sesuatu seperti ini akan merusak konvensi itu. Tentu saja Anda bisa:
-m <msg>
--message = <msg>
Gunakan yang diberikan <msg> sebagai pesan komit. Jika beberapa -mopsi diberikan, nilainya digabungkan sebagai paragraf terpisah.
Jadi, jika Anda mencari untuk mengelompokkan beberapa pesan komit, ini harus dilakukan:
Anda dapat meninggalkan -edan masih akan membuka editor
djangonaut
Yang ini adalah jawaban yang saya cari.
Tinmarino
28
Tidak perlu menyulitkan barang. Setelah -m "text...baris berikutnya didapat dengan menekan Enter. Saat Enterditekan >muncul. Setelah selesai, cukup "tekan dan tekan Enter:
$ git commit -m "Another way of demonstrating multicommit messages:
>
> This is a new line written
> This is another new line written
> This one is really awesome too and we can continue doing so till ..."
$ git log -1
commit 5474e383f2eda610be6211d8697ed1503400ee42(HEAD -> test2)Author:**************<*********@gmail.com>Date:MonOct913:30:262017+0200Another way of demonstrating multicommit messages:This is a new line written
This is another new line written
This one is really awesome too and we can continue doing so till ...
Ini adalah jawaban yang bagus, baris baru ditampilkan dengan benar di Github. Baris pertama ditampilkan sebagai tajuk.
Yogesh Umesh Vaity
18
Saya menggunakan zsh pada Mac, dan saya dapat memposting pesan komit multi-baris dalam tanda kutip ganda ("). Pada dasarnya saya terus mengetik dan menekan kembali untuk baris baru, tetapi pesan itu tidak dikirim ke Git sampai saya menutup tanda kutip dan kembali .
Anda juga dapat menginstruksikan Git untuk menggunakan editor pilihan Anda untuk mengedit pesan komit. Dari dokumen pada git-commit :
Editor yang digunakan untuk mengedit pesan log komit akan dipilih dari
GIT_EDITORvariabel lingkungan, core.editorvariabel konfigurasi, VISUALvariabel lingkungan, atau EDITOR
variabel lingkungan (dalam urutan itu). Lihat git-var untuk detailnya.
Secara pribadi, saya merasa paling mudah untuk mengubah pesan komit setelah fakta di vi(atau apa pun pilihan editor git Anda) daripada di baris perintah, dengan melakukan git commit --amendsetelahnya git commit.
Jadi mengapa ada orang yang menurunkan ini? Ini adalah cara paling nyaman untuk bekerja dengan perintah multiline di bash, Anda hanya perlu mengkonfigurasinya dengan benar sekali. Saya telah menggunakan saran bodoh lainnya yang ditunjukkan dalam jawaban lain di sini, tetapi begitu Anda belajar mengedit perintah di editor teks favorit Anda, tidak ada jalan kembali.
Aleks-Daniel Jakimenko-A.
1
Ini sangat berguna memilukan saya tidak bisa percaya saya menjalani tahun-tahun terakhir saya tanpa ini.
SoonDead
2
Berikut adalah daftar solusi gagal pada Windows dengan shell cmd.exe standar (untuk menghemat waktu percobaan-dan-kesalahan!):
git commit -m 'HelloEnter tidak berfungsi: tidak akan meminta baris baru
git commit -m "HelloEnter idem
git commit -m "Hello^Enter idem
git commit -m 'Hello^EnterWorld'sepertinya bekerja karena meminta "Lebih banyak?" dan memungkinkan untuk menulis baris baru, tetapi akhirnya ketika melakukan git logAnda akan melihat bahwa itu masih pesan satu baris ...
TL; DR: Sekalipun di Windows, penguraian baris perintah berfungsi berbeda , dan ^memungkinkan input multiline, itu tidak membantu di sini.
Akhirnya git commit -emungkin merupakan pilihan terbaik.
Hanya saja, jangan gunakan alasan sedih, sedih untuk penawaran "shell" windows.
jthill
2
Sayangnya, git tampaknya tidak mengizinkan karakter baris baru dalam pesannya. Ada berbagai solusi masuk akal yang sudah di atas, tetapi ketika membuat skrip, itu menjengkelkan. Di sini dokumen juga berfungsi, tetapi mungkin juga agak menjengkelkan untuk ditangani (pikirkan file yaml)
Meskipun ini juga masih jelek, ini memungkinkan untuk 'one-liners' yang mungkin masih berguna. Karena biasanya string adalah variabel atau dikombinasikan dengan variabel, uglynes dapat dijaga agar tetap minimum.
Saya tidak melihat ada yang menyebutkan bahwa jika Anda tidak memberikan pesan itu akan membuka nano untuk Anda (setidaknya di Linux) di mana Anda dapat menulis beberapa baris ...
GIT_EDITOR="emacs" git commit -m 'paragraph1' -m 'paragraph2' -e
akan membantu Anda menghindarivim
.Jawaban:
Tentu saja, bagaimana ini dilakukan tergantung pada shell Anda. Di Bash, Anda dapat menggunakan tanda kutip tunggal di sekitar pesan dan membiarkan tanda kutip terbuka, yang akan membuat Bash meminta baris lain, sampai Anda menutup tanda kutip. Seperti ini:
Atau, Anda dapat menggunakan "dokumen di sini" (juga dikenal sebagai heredoc):
sumber
git
perintah dapat membaca teks pesan dari stdin, dan-F
opsi memberi nama file untuk membaca pesan.Jika Anda hanya ingin, katakanlah, baris utama dan baris konten, Anda dapat menggunakan:
Perhatikan bahwa ini membuat paragraf terpisah - bukan baris. Jadi akan ada garis kosong antara masing-masing dua
-m
garis, misalnya:sumber
-m
untuk setiap baris. Bagus!man git commit
: -m <msg>, --message = <msg> Gunakan <msg> yang diberikan sebagai pesan komit. Jika opsi multiple -m diberikan, nilainya akan digabungkan sebagai paragraf terpisah.-m
garis.Menggunakan Git dari baris perintah dengan Bash Anda dapat melakukan hal berikut:
Cukup ketik dan tekan Enterketika Anda menginginkan baris baru, simbol ">" berarti Anda telah menekan Enter, dan ada baris baru. Jawaban lain juga berfungsi.
sumber
Anda harus bisa menggunakannya
Dari manual Bash :
Ini termasuk dukungan untuk baris baru seperti yang ditunjukkan di atas, ditambah kode hex dan Unicode dan lainnya. Buka bagian yang ditautkan untuk melihat daftar karakter yang lolos dari garis miring terbalik.
sumber
echo $'one\ntwo'
?git commit -m "first line"$'\n'"second line"
. Perhatikan bahwa Anda harus menutup string sebelumnya sebelum memulai$'string'
.Menambahkan jeda baris ke komit Git Anda
Coba yang berikut ini untuk membuat pesan komit multi-baris:
Kemudian verifikasi apa yang telah Anda lakukan:
Anda harus berakhir dengan sesuatu seperti ini:
Tangkapan layar berasal dari contoh yang saya atur menggunakan PowerShell with Poshgit.
sumber
Melakukan sesuatu seperti
tidak bekerja, tetapi sesuatu seperti
bekerja, tapi itu tidak terlalu cantik. Anda mengatur
git-commitlb
perintah diPATH
mana Anda melakukan sesuatu seperti ini:Dan gunakan seperti ini:
Kata peringatan, saya merasa bahwa konvensi umum adalah memiliki garis ringkasan sebagai baris pertama, dan kemudian dua baris terputus, dan kemudian pesan yang diperluas dalam pesan komit, jadi melakukan sesuatu seperti ini akan merusak konvensi itu. Tentu saja Anda bisa:
sumber
Dari dokumentasi Git :
Jadi, jika Anda mencari untuk mengelompokkan beberapa pesan komit, ini harus dilakukan:
sumber
Saya harap ini tidak mengarah terlalu jauh dari pertanyaan yang diposting, tetapi mengatur editor default dan kemudian menggunakan
mungkin jauh lebih nyaman.
sumber
-e
dan masih akan membuka editorTidak perlu menyulitkan barang. Setelah
-m "text...
baris berikutnya didapat dengan menekan Enter. Saat Enterditekan>
muncul. Setelah selesai, cukup"
tekan dan tekan Enter:sumber
Saya menggunakan zsh pada Mac, dan saya dapat memposting pesan komit multi-baris dalam tanda kutip ganda ("). Pada dasarnya saya terus mengetik dan menekan kembali untuk baris baru, tetapi pesan itu tidak dikirim ke Git sampai saya menutup tanda kutip dan kembali .
sumber
Di Bash / Zsh Anda cukup menggunakan jeda baris literal di dalam tanda kutip:
Mengutip ANSI-C juga berfungsi di Bash / Zsh:
git commit -m $'Multi-line\ncommit\nmessage'
Anda juga dapat menginstruksikan Git untuk menggunakan editor pilihan Anda untuk mengedit pesan komit. Dari dokumen pada git-commit :
sumber
Secara pribadi, saya merasa paling mudah untuk mengubah pesan komit setelah fakta di
vi
(atau apa pun pilihan editor git Anda) daripada di baris perintah, dengan melakukangit commit --amend
setelahnyagit commit
.sumber
git commit -e
.git commit
, dan itu akan membuka editor dengan templat pesan komit.Jika Anda menggunakan Bash, tekan
C-x C-e
( Ctrl+ x Ctrl+ e), dan itu akan membuka perintah saat ini di editor pilihan Anda.Anda dapat mengubah editor yang disukai dengan men
VISUAL
- tweak danEDITOR
.Itu yang saya miliki di
.bashrc
:sumber
Berikut adalah daftar solusi gagal pada Windows dengan shell cmd.exe standar (untuk menghemat waktu percobaan-dan-kesalahan!):
git commit -m 'Hello
Enter tidak berfungsi: tidak akan meminta baris barugit commit -m "Hello
Enter idemgit commit -m "Hello^
Enter idemgit commit -m 'Hello^
EnterWorld'
sepertinya bekerja karena meminta "Lebih banyak?" dan memungkinkan untuk menulis baris baru, tetapi akhirnya ketika melakukangit log
Anda akan melihat bahwa itu masih pesan satu baris ...TL; DR: Sekalipun di Windows, penguraian baris perintah berfungsi berbeda , dan
^
memungkinkan input multiline, itu tidak membantu di sini.Akhirnya
git commit -e
mungkin merupakan pilihan terbaik.sumber
Sayangnya, git tampaknya tidak mengizinkan karakter baris baru dalam pesannya. Ada berbagai solusi masuk akal yang sudah di atas, tetapi ketika membuat skrip, itu menjengkelkan. Di sini dokumen juga berfungsi, tetapi mungkin juga agak menjengkelkan untuk ditangani (pikirkan file yaml)
Inilah yang saya lakukan:
Meskipun ini juga masih jelek, ini memungkinkan untuk 'one-liners' yang mungkin masih berguna. Karena biasanya string adalah variabel atau dikombinasikan dengan variabel, uglynes dapat dijaga agar tetap minimum.
sumber
Saya tidak melihat ada yang menyebutkan bahwa jika Anda tidak memberikan pesan itu akan membuka nano untuk Anda (setidaknya di Linux) di mana Anda dapat menulis beberapa baris ...
Hanya ini yang dibutuhkan:
sumber