Undo & Recovery
Cara aman mengembalikan perubahan tanpa merusak history tim
Undo & Recovery
Bagian ini fokus pada cara aman membatalkan perubahan dan memulihkan kesalahan.
Revert Commit (Aman untuk Tim)
Purpose: Membatalkan efek commit dengan commit baru. Inputs: ID commit yang ingin dibatalkan. Outputs: commit baru yang membalik perubahan. Steps:
- Temukan ID commit.
- Jalankan
git revert. - Push hasilnya.
Pitfalls: revert tidak menghapus commit lama, hanya membalik isi.
Validation:
git logmenunjukkan commit revert baru.
git log --oneline
git revert <commit_id>Reset (Hati-hati)
Purpose: Memindahkan pointer HEAD ke commit tertentu. Inputs: target commit. Outputs: posisi HEAD berubah. Steps:
- Pilih mode reset sesuai kebutuhan.
- Jalankan reset.
Pitfalls:
--hardbisa menghapus perubahan lokal. Validation:git log --onelinemenunjukkan HEAD berpindah.
# Soft: commit batal, perubahan tetap staged
git reset --soft HEAD~1
# Mixed: commit batal, perubahan jadi unstaged
git reset --mixed HEAD~1
# Hard: commit batal, perubahan hilang
git reset --hard HEAD~1Hindari git reset --hard pada branch yang sudah di-push.
Restore File
Purpose: Mengembalikan file ke kondisi terakhir yang di-commit. Inputs: path file. Outputs: file kembali ke state sebelumnya. Steps:
- Tentukan file yang ingin di-restore.
- Jalankan
git restore. Pitfalls: perubahan lokal hilang setelah restore. Validation:git statusmenunjukkan file bersih.
git restore path/to/fileStash (Simpan Sementara)
Purpose: Menyimpan perubahan sementara tanpa commit. Inputs: perubahan lokal. Outputs: stash baru di stack. Steps:
git stashuntuk menyimpan.git stash popuntuk mengembalikan. Pitfalls: lupa pop stash membuat perubahan tertinggal. Validation:git stash listmenunjukkan stash ada atau sudah kosong.
git stash
git stash list
git stash popReflog (Recovery Terakhir)
Purpose: Menemukan commit yang “hilang” setelah reset atau rebase. Inputs: reflog lokal. Outputs: ID commit yang bisa dipulihkan. Steps:
- Cek reflog.
- Reset ke commit yang diinginkan. Pitfalls: reflog hanya ada di lokal. Validation: HEAD kembali ke commit yang hilang.
git reflog
git reset --hard <reflog_commit_id>Next Steps
- Kembali ke Git Fundamentals.