Bagaimana cara saya mengedit atau menulis ulang pesan gabungan?
git commit --amend
berfungsi jika itu adalah komit terakhir yang dibuat ( HEAD
), tetapi bagaimana jika itu datang sebelumnya HEAD
?
git rebase -i HEAD~5
tidak mencantumkan komitmen gabungan.
! [rejected] HEAD -> master (non-fast-forward)error: failed to push some refs to
HEAD~5
induk dari komit yang ingin Anda ubah (biasanya sha1 ^).--preserve-merges
sekarang--rebase-merges
Perhatikan bahwa, mulai git1.7.9.6 (dan git1.7.10 +),
git merge
itu sendiri akan selalu memicu editor , bagi Anda untuk menambahkan detail ke gabungan.Itu juga memperkenalkan variabel lingkungan
GIT_MERGE_AUTOEDIT
untuk membantu skrip yang lebih lama menolak perilaku ini.Lihat " Antisipasi Git 1.7.10 ":
Linus berkata:
Perhatikan bahwa, sebelum Git 2.17 (Q2 2018), "
git rebase -p
" pesan log yang digabungkan dari komit gabungan, yang sekarang sudah diperbaiki.Lihat komit ed5144d (08 Feb 2018) oleh Gregory Herrero (``) .
Disarankan oleh: Vegard Nossum (
vegard
) , dan Quentin Casasnovas (casasnovas
) .(Digabung oleh Junio C Hamano -
gitster
- dalam komit 8b49408 , 27 Feb 2018)Dengan Git 2.23 (Q2 2019), "
merge -c
" instruksi selama "git rebase --rebase-merges
" harus memberi pengguna kesempatan untuk mengedit pesan log, bahkan ketika tidak ada kebutuhan untuk membuat gabungan baru dan mengganti yang sudah ada (yaitu fast-forward saja ), tetapi tidak.Yang sudah diperbaiki.
Lihat komit 6df8df0 (02 Mei 2019) oleh Phillip Wood (
phillipwood
) .(Digabung oleh Junio C Hamano -
gitster
- di commit c510261 , 13 Jun 2019)sumber
Jawaban bagus lainnya hanya menggunakan perintah primitif - oleh knittl https://stackoverflow.com/a/7599522/94687 :
atau perintah rebase akhir yang lebih baik (lebih benar):
BTW, menggunakan perintah primitif mungkin memiliki "fitur" yang bagus untuk tidak mengonsumsi terlalu banyak CPU dan membuat Anda menunggu waktu yang tidak diketahui sampai Git selesai memikirkan daftar komit yang perlu diubah kembali dalam kasus
git rebase -p -i HEAD^^^^
(perintah seperti itu yang akan menghasilkan daftar hanya 4 komit terakhir dengan penggabungan sebagai yang terakhir dalam kasus saya dalam kasus saya memakan waktu sekitar 50 detik!).sumber
git merge --edit
Memungkinkan Anda memberikan komentar meskipun penggabungan non-interaktif.
git merge --edit --no-ff
dapat berguna jika Anda mengikuti alur git dengan rebasing di cabang pengembangan dan bergabung dengannya tanpa maju cepat.sumber
Untuk versi Git saat ini (Mai 2020):
git rebase -i -r <parent>
,lalu ganti editor
merge -C ...
denganmerge -c ...
.Ini akan membuka pesan komit di editor selama rebasing, di mana Anda dapat mengubahnya.
(Terima kasih kepada VonC untuk petunjuknya .)
sumber
The
git rebase -i HEAD~5
perintah muncul editor. Ini daftar komit yang ditentukan (dalam hal ini lima di antaranya). Kolom pertama berisipick
untuk setiap komit. Cukup gantipick
denganreword
di editor itu dan simpan + tutup editor. Kemudian git akan muncul editor untuk setiap komit mana Anda berubahpick
kereword
dan akan membiarkan Anda mengedit pesan commit.sumber
-p
kegit rebase
perintah.