Akhirnya, git commit -a --allow-empty-message -m ''bahkan tidak akan membuka editor lagi. Lihat jawaban saya di bawah ini
VonC
2
Pada Windows perintah ini git commit -a --allow-empty-message -m ''merek komit dengan pesan commit " ''", maka akan lebih baik untuk menggunakan perintah ini sebagai gantinya: git commit -a --allow-empty-message -m "".
tav
Jawaban:
137
git umumnya memerlukan pesan yang tidak kosong karena menyediakan pesan komit yang berarti adalah bagian dari praktik pengembangan yang baik dan pengelolaan repositori yang baik. Baris pertama dari pesan komit digunakan di semua tempat di dalam git; untuk lebih lanjut, baca "Catatan Tentang Pesan Git Commit" .
Jika Anda membuka Terminal.app, cdke direktori proyek Anda, dan git commit -am '', Anda akan melihat bahwa itu gagal karena pesan komit kosong tidak diperbolehkan. Versi git yang lebih baru memiliki --allow-empty-messageargumen baris perintah, termasuk versi git yang disertakan dengan Xcode versi terbaru. Ini akan membiarkan Anda menggunakan perintah ini untuk membuat komit dengan pesan kosong:
git commit -a --allow-empty-message -m ''
Sebelum --allow-empty-messagebendera, Anda harus menggunakan commit-treeperintah pipa ledeng. Anda dapat melihat contoh penggunaan perintah ini di bab "Raw Git" dari buku Git .
Versi yang lebih baru gitmemiliki --allow-empty-messageargumen baris perintah. Lihat dokumentasinya di sini . Ini menyebutkan Anda dulu dapat melakukan hal yang sama menggunakan perintah pipa ledeng git-commit-tree.
Jeremy W. Sherman
18
Menurut saya kalimat "memberikan pesan komitmen yang berarti adalah bagian dari praktik pengembangan yang baik" adalah salah - orang dapat mengatakan bahwa memberikan pesan komitmen yang bermakna dianggap sebagai bagian dari praktik pengembangan yang baik, karena pernyataan tersebut memecah belah - I for one percaya bahwa informasi yang lebih sedikit terkadang menyebabkan lebih sedikit kebingungan, terutama karena git jelas menyimpan perubahan aktual ke repositori, dan sebuah surat git diffwasiat akan menunjukkan kepada pihak yang berkepentingan dengan tepat apa isi komit, tanpa bergantung pada deskripsi tertulis manusia. Mesin harus menyelamatkan kita dari tenaga kerja jika memungkinkan.
amn
2
@ amn, saya juga baru saja mulai bertanya-tanya tentang puluhan ribu pesan komit yang ditulis dengan baik yang telah saya tulis yang tidak akan pernah dibaca oleh siapa pun. Bagi saya sekarang nilai dari kebiasaan ini adalah bahwa hal itu memaksa saya untuk melihat perubahan dalam upaya untuk menggambarkannya, dan ini terkadang membuat saya memperhatikan bug. Anda benar. Saya akan mempertimbangkan untuk lebih memperhatikan kode dan lebih sedikit pada pesan komit.
osa
7
Git tidak hanya digunakan untuk pengembangan kode lagi. Ketika saya mengupdate halaman wiki GitHub atau dokumen Overleaf LaTeX, biasanya tidak ada yang perlu dikatakan karena saya mengupdate dokumentasi. Segala sesuatu yang bermakna secara semantik tentang perubahan terkandung dalam diff. Saya sebenarnya menemukan diri saya menggunakan teks perubahan sebagai pesan komit itu sendiri: benar-benar berlebihan!
Jim Pivarski
1
@ amn, terkadang keluaran dari git difftidak cukup jelas, bahkan ketika pelaku percaya itu.
Cowlinator
26
Dan jika Anda menambahkan alias untuk itu maka itu lebih baik bukan?
git config --global alias.nccommit 'commit -a --allow-empty-message -m ""'
Sekarang Anda tinggal melakukan nccommit, nc karena tidak ada komentar, dan semuanya harus dikomit.
Saya menggunakan metode ini ketika saya benar-benar tidak ingat apa yang saya masukkan ke dalam sebuah commit dan saya terlalu malas untuk diffitu semua.
Jika pesan kosong ditentukan dengan opsi -mgit commit maka editor akan dimulai.
Itu tidak terduga dan tidak perlu.
Alih-alih menggunakan panjang string pesan untuk memeriksa apakah pengguna menentukannya, langsung ingat jika opsi -mdiberikan.
git 2.9 (Juni 2016) meningkatkan perilaku pesan kosong:
commit: jangan abaikan pesan kosong yang diberikan oleh -m ''
" git commit --amend -m '' --allow-empty-message", meskipun terlihat aneh, adalah permintaan yang valid untuk mengubah komit agar tidak memiliki pesan sama sekali.
Karena kesalahan deteksi keberadaan -mpada baris perintah, kami akhirnya menyimpan pesan log dari komit asli.
" git commit -m "$msg" -F file" harus ditolak apakah $msgstring kosong atau bukan, tetapi karena bug yang sama, tidak ditolak saat $msgkosong.
"git -c template=file -m "$msg" " harus mengabaikan template meskipun $msgkosong, tetapi template tidak dan malah menggunakan konten dari file template.
Anda tidak perlu keberanian untuk mencapai ini. Penggunaan kreatif dari fungsi bash akan berhasil dengan baik. Jika Anda tidak peduli dengan pesan, cukup setel default dan lupakan.
function gitcom() {
git commit -m "my default commit message"
}
Jika Anda merasa benar-benar suka berpetualang, Anda dapat menambahkan, berkomitmen, dan mendorong dengan satu perintah
Anda bahkan bisa lebih mendalam dan menggunakan parse_git_branch untuk menghemat beberapa penekanan tombol di sana, atau menyetel default umum "origin" dan "master".
Bisakah Anda memberikan beberapa detail lebih lanjut tentang cara menyiapkan fungsi bash ini?
adaam
1
Dengan asumsi Anda menggunakan OSX atau Linux, Anda dapat menyalin fungsi-fungsi ini dan menempatkannya di .profil Anda (harus ada di folder rumah Anda, jika tidak, buatlah). Buka jendela konsol baru dan perintah tersebut akan tersedia untuk Anda. Setiap perubahan yang dibuat pada file-file ini akan meminta Anda untuk menyegarkan sesi bash sehingga Anda dapat mempercepat dengan menambahkan alias berikut ke file itu: alias ea = "subl ~ / .profile" # subl adalah editor teks saya, gantikan dengan milik Anda sendiri alias er = "source ~ / .profile" # ini akan mereset Sekarang ketika Anda ingin menambahkan pintasan Anda cukup mengetik "ea" (edit alias) Dan untuk menyegarkan er
Steven Garcia
2
Jika Anda disebut script git-comdan git-zap(tanpa ekstensi) dan menempatkan mereka di suatu tempat git dapat menemukan mereka (yaitu suatu tempat di PATH Anda), git memperlakukan mereka seperti perintah git biasa dan Anda dapat meminta mereka seperti ini: git com,git zap origin master
Manuzor
1
di pesta itu salah satu function gitcom {atau gitcom() {TMK, perbaiki?
2
Git membutuhkan komit untuk memiliki komentar, jika tidak, Git tidak akan menerima komit.
Anda dapat mengkonfigurasi template default dengan git sebagai pesan komit default Anda atau dapat mencari tanda --allow-empty-message di git. Saya pikir (tidak 100% yakin) Anda dapat mengkonfigurasi ulang git untuk menerima pesan komit kosong (yang bukan ide yang bagus). Biasanya setiap komit harus sedikit pekerjaan yang dijelaskan oleh pesan Anda.
Tidak yakin mengapa jawaban ini ditolak. Saya setuju bahwa memaksa Git untuk menerima pesan komit kosong, atau menggunakan pesan seperti 'simpan', adalah ide yang buruk. Berhenti melawannya, dan pelajari saja alat sialan itu.
Jezen Thomas
2
Saya memiliki konfigurasi berikut dalam proyek pribadi saya:
git config alias.auto 'commit -a -m "changes made from [device name]"'
Dengan begitu, saat saya sedang terburu-buru, saya melakukannya
git auto
git push
Dan setidaknya saya tahu dari perangkat apa commit itu dibuat.
itu semacam lelucon. Tetapi untuk sedikit komitmen yang HARUS Anda lakukan untuk mengirimkan perubahan ke heroku (misalnya), tidak masalah dalam contoh pengembang tunggal.
git commit -a --allow-empty-message -m ''
bahkan tidak akan membuka editor lagi. Lihat jawaban saya di bawah inigit commit -a --allow-empty-message -m ''
merek komit dengan pesan commit "''
", maka akan lebih baik untuk menggunakan perintah ini sebagai gantinya:git commit -a --allow-empty-message -m ""
.Jawaban:
git umumnya memerlukan pesan yang tidak kosong karena menyediakan pesan komit yang berarti adalah bagian dari praktik pengembangan yang baik dan pengelolaan repositori yang baik. Baris pertama dari pesan komit digunakan di semua tempat di dalam git; untuk lebih lanjut, baca "Catatan Tentang Pesan Git Commit" .
Jika Anda membuka Terminal.app,
cd
ke direktori proyek Anda, dangit commit -am ''
, Anda akan melihat bahwa itu gagal karena pesan komit kosong tidak diperbolehkan. Versi git yang lebih baru memiliki--allow-empty-message
argumen baris perintah, termasuk versi git yang disertakan dengan Xcode versi terbaru. Ini akan membiarkan Anda menggunakan perintah ini untuk membuat komit dengan pesan kosong:Sebelum
--allow-empty-message
bendera, Anda harus menggunakancommit-tree
perintah pipa ledeng. Anda dapat melihat contoh penggunaan perintah ini di bab "Raw Git" dari buku Git .sumber
git
memiliki--allow-empty-message
argumen baris perintah. Lihat dokumentasinya di sini . Ini menyebutkan Anda dulu dapat melakukan hal yang sama menggunakan perintah pipa ledenggit-commit-tree
.git diff
wasiat akan menunjukkan kepada pihak yang berkepentingan dengan tepat apa isi komit, tanpa bergantung pada deskripsi tertulis manusia. Mesin harus menyelamatkan kita dari tenaga kerja jika memungkinkan.git diff
tidak cukup jelas, bahkan ketika pelaku percaya itu.Dan jika Anda menambahkan alias untuk itu maka itu lebih baik bukan?
Sekarang Anda tinggal melakukan nccommit, nc karena tidak ada komentar, dan semuanya harus dikomit.
sumber
Saat mengerjakan pembaruan kode penting, jika Anda benar-benar membutuhkan titik aman perantara, Anda dapat melakukan:
atau lebih pendek:
sumber
diff
itu semua.Catatan: mulai git1.8.3.2 (Juli 2013), perintah berikut ( disebutkan di atas oleh Jeremy W Sherman ) tidak akan membuka editor lagi:
Lihat commit 25206778aac776fc6cc4887653fdae476c7a9b5a :
git 2.9 (Juni 2016) meningkatkan perilaku pesan kosong:
Lihat commit 178e814 (06 Apr 2016) oleh Adam Dinwoodie (
me-and
) .Lihat commit 27014cb (07 Apr 2016) oleh Jeff King (
peff
) .(Digabung oleh Junio C Hamano -
gitster
- di commit 0709261 , 22 Apr 2016)sumber
Anda tidak perlu keberanian untuk mencapai ini. Penggunaan kreatif dari fungsi bash akan berhasil dengan baik. Jika Anda tidak peduli dengan pesan, cukup setel default dan lupakan.
Jika Anda merasa benar-benar suka berpetualang, Anda dapat menambahkan, berkomitmen, dan mendorong dengan satu perintah
Yang kemudian akan Anda jalankan sebagai
Anda bahkan bisa lebih mendalam dan menggunakan parse_git_branch untuk menghemat beberapa penekanan tombol di sana, atau menyetel default umum "origin" dan "master".
sumber
git-com
dangit-zap
(tanpa ekstensi) dan menempatkan mereka di suatu tempat git dapat menemukan mereka (yaitu suatu tempat di PATH Anda), git memperlakukan mereka seperti perintah git biasa dan Anda dapat meminta mereka seperti ini:git com
,git zap origin master
function gitcom {
ataugitcom() {
TMK, perbaiki?Git membutuhkan komit untuk memiliki komentar, jika tidak, Git tidak akan menerima komit.
Anda dapat mengkonfigurasi template default dengan git sebagai pesan komit default Anda atau dapat mencari tanda --allow-empty-message di git. Saya pikir (tidak 100% yakin) Anda dapat mengkonfigurasi ulang git untuk menerima pesan komit kosong (yang bukan ide yang bagus). Biasanya setiap komit harus sedikit pekerjaan yang dijelaskan oleh pesan Anda.
sumber
Saya memiliki konfigurasi berikut dalam proyek pribadi saya:
Dengan begitu, saat saya sedang terburu-buru, saya melakukannya
Dan setidaknya saya tahu dari perangkat apa commit itu dibuat.
sumber
Saya menemukan solusi paling sederhana:
Itu saja, Anda akan mengatasi hal-hal pesan git commit.
Anda bahkan dapat menyimpan pujian itu ke pesta atau hal lain untuk membuatnya lebih sederhana.
Anggota tim kami selalu menulis pesan tersebut, tetapi hampir tidak ada yang akan melihat pesan itu lagi.
Pesan komitmen adalah hal yang menghabiskan waktu setidaknya di tim kami, jadi kami mengabaikannya.
sumber
Pesan komit adalah praktik terbaik yang harus diikuti setiap saat. Kecuali Anda satu-satunya pengembang dan itu tidak akan berubah dalam waktu dekat.
sumber