Membuat kesalahan itu normal. Git punya beberapa cara untuk membatalkan perubahan:
git revert <commit> — membuat commit baru yang membatalkan commit tertentu:
$ git revert abc1234
[main def5678] Revert "tambah fitur X"
✅ Aman — tidak mengubah history, cocok untuk branch yang sudah di-push.
git reset — memundurkan HEAD ke commit tertentu. Ada 3 mode:
--soft — mundurkan HEAD, perubahan tetap di staging:
$ git reset --soft HEAD~1
# commit terakhir dibatalkan, tapi file tetap di staging area
--mixed (default) — mundurkan HEAD, perubahan tetap di working directory:
$ git reset HEAD~1
# commit dibatalkan, file kembali ke status "modified"
--hard — mundurkan HEAD, hapus semua perubahan:
$ git reset --hard HEAD~1
# ⚠️ HATI-HATI: perubahan hilang permanen!
Kapan pakai yang mana?
| Situasi | Perintah |
|---|---|
| Commit sudah di-push, perlu dibatalkan | git revert |
| Commit belum di-push, ingin edit ulang | git reset --soft |
| Unstage file dari staging area | git reset HEAD <file> |
| Buang semua perubahan lokal | git reset --hard ⚠️ |
Aturan emas: Jangan pakai
git reset --hardpada commit yang sudah di-push ke remote. Gunakangit revertsebagai gantinya.