Untuk alasan malas saya mendorong banyak komit dengan pesan default dan sekarang sudah menjadi rumit, karena saya tidak benar-benar tahu apa yang telah saya ubah di setiap komit.
Bagaimana cara saya mengedit pesan dari komit sebelumnya dan (jika mungkin) menjaga pohon komit?
Jawaban:
Untuk mengedit pesan komit dari serangkaian komit, saya jalankan
di mana
firstsha
pengidentifikasi untuk komit induk dari komit pertama yang ingin saya edit. (Anda dapat menggunakan referensi yang valid di sini, sehinggagit rebase -i HEAD~4
akan menunjukkan empat komitmen terakhir.)Di editor yang terbuka, ubah semua entri "pilih" menjadi "reword" pada komit yang ingin Anda modifikasi, lalu tutup editor; Anda kemudian akan diminta untuk memasukkan pesan komit untuk semua komit yang Anda pilih.
Perhatikan bahwa ini akan mengubah pohon komit, karena hash dari commit akan berubah. Anda harus mendorong-paksa pohon baru Anda, atau mendorongnya ke cabang baru. Itu juga akan mengacaukan gabungan, jadi hindari mengedit komit gabungan.
Untuk mengedit hanya komit terakhir dengan cepat, jalankan
(tapi waspadalah terhadap apapun yang dipentaskan untuk melakukan).
sumber
preserve-merges
)Apa yang Anda cari adalah
git rebase
.Jika Anda hanya ingin mengubah
git commit
pesan sebelumnya maka Anda hanya perlu menggunakan yang berikut:Dan buat perubahan yang Anda inginkan ke komit sebelumnya dan kemudian simpan hasil edit.
Namun, jika Anda perlu mengubah komitmen lama, Anda perlu menggunakannya
rebase
.di mana N sama dengan jumlah komit yang ingin Anda kembali, misalnya 2 atau 12 atau 6, dll.
Di sini Anda harus mendapatkan editor teks dengan komit Anda. Ubah opsi dari
pick
menjadireword
untuk mengubah pesan.Setelah Anda mengidentifikasi semua komitmen yang ingin Anda ubah dan telah secara tepat mengubah opsi mereka, simpan dan tutup editor. Kemudian buat perubahan untuk setiap pesan komit. Setelah puas, Anda dapat menjalankan:
Dan Anda harus mempertahankan sejarah git Anda walaupun dengan nilai hash yang berbeda karena Anda telah melakukan perubahan yang diperlukan. Berikut ini beberapa tautan tambahan yang harus Anda periksa:
7.6 Alat Git - Riwayat Penulisan Ulang
Bantuan GitHub - Mengubah Pesan Komit
StackOverflow - Pertanyaan tentang Mengubah pesan komit lama
sumber
commit --amend
", kecuali Anda entah bagaimana mengacaukan proses komit.git rebase -i firstsha
itufirstsha
adalah orang tua melakukan hash ini dari komit bahwa aku ingin mengubah pesan, maka dalam editor, perubahanpick
untukreword
,enter
pesan baru, maka masalahgit rebase --continue
dan lakukangit push --force
?git rebase -i HEAD~N
dengan N sebagai jumlah komit yang ingin Anda tuju. Ubah setiap opsi komit yang Anda inginkan untuk mengedit pesan daripick
menjadireword
, simpan file ini, buat perubahan untuk masing-masing file komit tersebut dan simpan itu. Setelah Anda yakin Anda selesai Anda hanya perlugit push --force [Name of git branch you are were working on]
. Anda selalu dapat kembali dan melakukan ini lagi atau melakukannya secara bertahap.