Mengubah sejarah
Jika ini adalah komit terbaru, Anda bisa melakukan ini:
git commit --amend
Ini memunculkan editor dengan pesan komit terakhir dan memungkinkan Anda mengedit pesan. (Anda dapat menggunakan -m
jika Anda ingin menghapus pesan lama dan menggunakan yang baru.)
Mendorong
Dan kemudian ketika Anda mendorong, lakukan ini:
git push --force-with-lease <repository> <branch>
Atau Anda dapat menggunakan "+":
git push <repository> +<branch>
Atau Anda dapat menggunakan --force
:
git push --force <repository> <branch>
Hati-hati saat menggunakan perintah ini.
Jika orang lain mendorong perubahan ke cabang yang sama, Anda mungkin ingin menghindari menghancurkan perubahan itu. The --force-with-lease
pilihan adalah yang paling aman, karena akan membatalkan jika ada perubahan hulu (
Jika Anda tidak menentukan cabang secara eksplisit, Git akan menggunakan pengaturan push standar. Jika pengaturan push standar Anda adalah "cocok", maka Anda dapat menghancurkan perubahan pada beberapa cabang secara bersamaan.
Menarik / mengambil sesudahnya
Siapa pun yang sudah menarik sekarang akan mendapatkan pesan kesalahan, dan mereka harus memperbarui (dengan asumsi mereka tidak melakukan perubahan apa pun sendiri) dengan melakukan sesuatu seperti ini:
git fetch origin
git reset --hard origin/master # Loses local commits
Hati-hati saat menggunakan reset --hard
. Jika Anda memiliki perubahan pada cabang, perubahan itu akan dihancurkan.
Catatan tentang memodifikasi riwayat
Data yang dihancurkan benar-benar hanya pesan komit lama, tetapi --force
tidak tahu itu, dan dengan senang hati akan menghapus data lain juga. Jadi anggap --force
sebagai "Saya ingin menghancurkan data, dan saya tahu pasti data apa yang sedang dihancurkan." Tetapi ketika data yang dihancurkan dilakukan, Anda sering dapat memulihkan komit lama dari reflog — data tersebut sebenarnya yatim piatu, bukan hancur (meskipun komit yatim dihapus secara berkala).
Jika Anda tidak berpikir Anda menghancurkan data, maka menjauhlah dari --force
... hal-hal buruk mungkin terjadi .
Inilah sebabnya mengapa --force-with-lease
agak lebih aman.