Git: Membatalkan Commit
Terakhir diperbarui
Cara membatalkan commit tergantung commit mana yang dimaksud dan apakah sudah di-push. Commit lama yang terselip di riwayatmu, atau apa pun yang sudah dibagikan, perlu git revert, yang menambahkan commit baru untuk membaliknya tanpa menulis ulang apa pun. Deretan commit lokal terbaru cukup dihapus dengan git reset. Kalau kamu hanya perlu membatalkan commit terbaru, halaman git undo last commit membahas setiap variasi perbaikan cepat itu.
Coba perintah-perintah ini di playground terminal: shell sungguhan di browsermu, tanpa perlu instalasi.
Perintah mana yang dipakai
| Situasi | Perintah |
|---|---|
| Batalkan satu commit lama, pertahankan semua commit sesudahnya | git revert <hash> |
| Batalkan commit yang sudah kamu push | git revert <hash> |
| Batalkan 3 commit lokal terakhir, pekerjaan tetap ada | git reset --soft HEAD~3 |
| Batalkan 3 commit lokal terakhir, pekerjaan dibuang | git reset --hard HEAD~3 |
| Batalkan sebuah rentang dengan commit kebalikan yang baru | git revert HEAD~3..HEAD |
reset vs revert
| Perilaku | git reset | git revert |
|---|---|---|
| Menulis ulang riwayat | Ya | Tidak |
| Aman untuk commit yang sudah di-push | Tidak | Ya |
| Membuat commit baru | Tidak | Ya |
| Bisa untuk commit lama di tengah riwayat | Tidak | Ya |
| Bisa membuang perubahan | Ya (--hard) | Tidak |
Contoh langkah demi langkah
Batalkan commit lama tertentu, bahkan yang sudah di-push, tanpa menyentuh commit-commit sesudahnya.
| Langkah | Perintah | Hasil |
|---|---|---|
| 1 | git log --oneline | Cari hash commit yang bermasalah (misalnya a1b2c3d) |
| 2 | git revert a1b2c3d | Commit baru membaliknya; commit sesudahnya tidak tersentuh |
| 3 | git push | Bagikan perbaikannya, tanpa ada riwayat yang ditulis ulang |
Pertanyaan seputar membatalkan commit
Bagaimana cara membatalkan commit lama tanpa kehilangan commit sesudahnya?
git revert <hash>. Revert membuat commit baru yang hanya membalik commit yang kamu sebutkan; setiap commit sesudahnya tetap persis seperti semula. Cari hash-nya dulu dengan git log --oneline. Kalau revert bentrok dengan perubahan sesudahnya, Git berhenti sejenak agar kamu bisa menyelesaikannya lalu menjalankan git revert --continue.Bagaimana cara membatalkan beberapa commit sekaligus?
git reset --soft HEAD~3 menghapus tiga commit terakhir sambil membiarkan perubahannya tetap di-stage (pakai --hard untuk membuangnya). Untuk commit yang sudah di-push, lakukan revert pada rentangnya: git revert --no-commit HEAD~3..HEAD membalik ketiganya, lalu satu git commit merekam pembatalannya.Bagaimana cara membatalkan commit yang sudah di-push?
git revert <hash>, bukan reset. Revert membuat commit baru yang membatalkan perubahan commit tujuan dan membiarkan riwayat utuh. Inilah cara aman untuk membatalkan commit bersama, karena menulis ulang riwayat yang sudah di-push dengan reset memaksa semua orang lain menyelaraskan salinan mereka.Kapan sebaiknya memakai reset dan kapan revert?
Pakai reset kalau commit-nya milikmu sendiri dan masih lokal: reset cukup memindahkan branch mundur, seolah commit itu tidak pernah ada. Pakai revert kalau commit-nya sudah di-push, dibagikan, atau berada di tengah riwayat: revert membatalkan perubahannya dengan commit baru yang aman di-pull oleh siapa saja.
Bisakah saya berlatih ini secara online?
Bisa. Buka playground terminal untuk menjalankan perintah-perintah ini di shell sungguhan di browsermu, tanpa perlu instalasi. Kursus Git interaktif gratis dari Coddy juga membahas cara membatalkan perubahan langkah demi langkah.