Membatalkan dengan Aman: git revert

Membatalkan commit yang sudah dibagikan tanpa menulis ulang riwayat.

Part 10 dari 22 ± 25 menit Gratis

Masalah: commit buruk sudah terlanjur dibagikan

Bayangkan kamu sudah mem-push commit yang ternyata membuat aplikasi error, dan rekanmu sudah menariknya. Kalau kamu pakai git reset untuk menghapusnya, riwayat di komputermu berbeda dari riwayat rekan dan server — kekacauan. Solusinya: tambahkan commit baru yang membatalkan perubahan itu.

git revert

git revert HEAD            # batalkan commit terakhir
git revert 4f1c2a7         # batalkan commit tertentu (berdasarkan hash)
git revert HEAD~2          # commit dua langkah ke belakang

Git membuat commit baru berisi kebalikan dari perubahan target. Pesan otomatisnya: Revert "Ubah diskon menjadi 1000 persen". Riwayat bertambah, tidak ada yang dihapus:

c1 Tambah aturan diskon 10 persen
c2 Ubah diskon menjadi 1000 persen      <- commit bermasalah
c3 Revert "Ubah diskon menjadi 1000 persen"   <- pembatal

reset vs revert

git resetgit revert
Cara kerjaMemindahkan branch mundur (menghapus commit dari riwayat)Membuat commit baru yang membatalkan
RiwayatDitulis ulangDipertahankan
Aman untuk commit yang sudah di-push?TidakYa
Cocok untukPekerjaan lokal yang belum dibagikanKesalahan di riwayat bersama

Revert commit yang bukan terakhir

Kamu bisa membatalkan commit di tengah riwayat; Git menerapkan kebalikannya pada kode saat ini. Jika commit-commit sesudahnya mengubah baris yang sama, Git bisa meminta kamu menyelesaikan konflik (dibahas di bab 14).

Revert beberapa commit sekaligus tanpa commit otomatis

git revert -n HEAD~2..HEAD   # -n = jangan commit otomatis, kumpulkan dulu
git commit -m "Batalkan eksperimen diskon"

Revert commit merge

Merge punya dua induk, sehingga Git perlu tahu sisi mana yang dipertahankan: git revert -m 1 <hash-merge> (-m 1 = pertahankan sisi branch utama). Ini topik lanjutan; cukup ingat bahwa perlu opsi -m.

Tips

  • Pesan revert boleh disesuaikan agar menjelaskan alasan pembatalan.
  • Revert bisa juga di-revert (membatalkan pembatalan) bila ternyata commit awalnya benar.

Praktikkan langsung, gratis

Tulis dan jalankan kode langsung di browser, dapatkan penilaian otomatis. Daftar gratis kapan saja untuk menyimpan progres dan meraih sertifikat.

Coba latihan sekarang, tanpa daftar
Bagikan: WhatsApp Facebook LinkedIn X