Konsep singkat
Setiap kali kamu commit + push, Git menyimpan “foto” project. Riwayatnya seperti timeline:
Rollback = kembali ke A atau B.
Maju lagi = setelah rollback, kembali ke C (yang pernah ada).
| Cara | Aman untuk kolaborasi? | Riwayat tetap utuh? | Kapan dipakai |
|---|---|---|---|
| Revert | Ya | Ya (tambah commit baru) | Repo shared / production — paling disarankan |
| Reset soft/mixed | Hati-hati | Lokal saja dulu | Belum di-push, atau kamu satu-satunya yang push |
| Reset --hard + force push | Tidak (tim bisa kacau) | Commit di branch terhapus dari remote | Hanya jika kamu yakin & sendirian di branch |
git push --force) menimpa riwayat di GitHub. Jangan dipakai di branch yang dipakai banyak orang tanpa koordinasi.
1. Lihat riwayat commit dulu
A. Di website GitHub (klik-klik)
Buka repository
Masuk ke repo kamu di GitHub (contoh: username/silverhawk-weblearn).
Buka tab Commits
Klik jumlah commit di atas daftar file (misalnya “12 Commits”), atau buka:
https://github.com/USERNAME/REPO/commits/main
Ganti main jika branch-mu bernama lain (master, gh-pages, dll).
Catat commit yang dituju
Setiap baris punya kode pendek (mis. 0b7a0f3). Klik commit untuk melihat detail perubahan. Salin hash penuh jika perlu (tombol copy di samping SHA).
B. Dengan perintah Git
# Pastikan sudah di folder project
cd path/ke/silverhawk-weblearn
# Riwayat ringkas
git log --oneline -15
# Lebih detail
git log --oneline --graph --decorate -20
# Lihat isi satu commit
git show 0b7a0f3
2. Rollback lewat website GitHub
Ada dua jalur umum: Revert (aman) dan Reset branch via UI (lebih “kasar”).
Opsi A — Revert satu commit (paling aman)
Buka commit yang ingin dibatalkan
Dari daftar commits, klik commit yang berisi perubahan bermasalah.
Klik tombol Revert
Di halaman detail commit, ada tombol Revert (pojok kanan). GitHub akan membuat commit baru yang membatalkan perubahan commit itu.
Buat pull request / commit langsung
Ikuti dialog: buat PR lalu merge, atau commit langsung ke branch jika diizinkan.
Opsi B — Kembalikan seluruh branch ke commit lama (klik di web)
GitHub tidak punya tombol “Reset branch” sekasar CLI, tapi kamu bisa memakai Create branch from commit lalu ganti default branch, atau pakai fitur berikut:
Buka commit target
Di daftar commits, klik commit yang ingin dijadikan “keadaan sekarang”.
Browse files di commit itu
Di halaman commit → Browse files. Kamu melihat isi repo persis di titik waktu itu.
Buat branch dari commit tersebut
Di dropdown branch (kiri atas), ketik nama branch baru (mis. rollback-ke-B) → Create branch from ….
Jadikan branch itu yang di-deploy (opsional)
Untuk GitHub Pages: Settings → Pages → Source pilih branch rollback-ke-B. Atau merge branch itu ke main via Pull Request jika ingin main ikut mundur (lebih rapi lewat CLI reset + PR, atau biarkan CLI).
main yang sudah publik, biasanya lebih jelas memakai perintah Git di bawah (reset + force push), dengan pemahaman risikonya.3. Maju lagi lewat website GitHub
Kalau kamu rollback dengan membuat branch baru dari commit lama, commit terbaru (C) masih ada di branch main (atau branch lain).
Kembali ke branch yang masih “maju”
Dropdown branch → pilih main (atau branch yang berisi commit C).
Atau merge / ganti source Pages
Settings → Pages → kembalikan Source ke branch yang berisi versi terbaru. Atau buka Pull Request dari main ke branch rollback jika ingin menyatukan lagi.
Jika pakai Revert
Revert bisa di-revert lagi: buka commit hasil Revert → klik Revert sekali lagi. Itu mengembalikan perubahan yang sempat dibatalkan (maju kembali secara efektif).
4. Rollback dengan perintah Git
Persiapan
cd path/ke/repo
git status
git fetch origin
git log --oneline -15
Salin hash commit target (misalnya 0b7a0f3 = keadaan yang diinginkan).
Cara aman: git revert (disarankan untuk main)
Membuat commit baru yang membatalkan commit tertentu. Riwayat tidak dihapus.
# Batalkan satu commit (ganti HASH)
git revert HASH --no-edit
git push origin main
# Batalkan beberapa commit berurutan (dari lama ke baru)
git revert HASH_LAMA^..HASH_BARU --no-edit
git push origin main
Cara “mundur total” lokal dulu: git reset
# Lihat dulu perbedaan tanpa mengubah file
git reset --dry-run HASH # (tidak semua versi Git punya; alternatif: git diff HASH)
# Mixed (default): pindah pointer branch, file tetap di working directory sebagai perubahan
git reset HASH
# Soft: pindah pointer, semua perubahan tetap di staging
git reset --soft HASH
# Hard: pindah pointer + buang semua perubahan setelah HASH (HATI-HATI)
git reset --hard HASH
git reset --hard menghapus perubahan lokal yang belum di-commit setelah titik itu. Pastikan tidak ada kerjaan penting yang belum di-backup.
Dorong rollback ke GitHub (hanya jika yakin)
# Setelah reset --hard ke HASH
git push --force-with-lease origin main
--force-with-lease lebih aman daripada --force: gagal jika orang lain sudah push commit baru di remote.
5. Maju lagi dengan perintah Git
Setelah rollback, commit “masa depan” (C) sering masih bisa ditemukan di reflog selama beberapa minggu.
Temukan commit yang hilang dari branch
# Riwayat pergerakan HEAD lokal (sangat berguna setelah reset)
git reflog
# Contoh keluaran:
# 0b7a0f3 HEAD@{0}: reset: moving to 0b7a0f3
# a1b2c3d HEAD@{1}: commit: fitur diskusi reply 3 level
# ...
Maju ke commit itu lagi
# Opsi 1: reset lagi ke commit “maju”
git reset --hard a1b2c3d
git push --force-with-lease origin main
# Opsi 2: buat branch dari commit itu, lalu merge (lebih aman untuk tim)
git branch pulih-fitur a1b2c3d
git checkout main
git merge pulih-fitur
git push origin main
Jika commit masih di remote branch lain
git fetch origin
git checkout main
git merge origin/nama-branch-yang-masih-baru
git push origin main
Jika sempat Revert dan ingin “maju” lagi
# Revert dari commit revert = kembalikan perubahan
git revert HASH_COMMIT_REVERT --no-edit
git push origin main
6. Tips, checklist, dan kesalahan umum
Sebelum rollback
- Catat hash commit target & commit terbaru
git status— pastikan working tree bersih atau di-stash- Kabari kolaborator jika force push
- Pertimbangkan branch cadangan:
git branch backup-sebelum-rollback
Setelah force push
- Kolaborator:
git fetch originlalugit reset --hard origin/main(hati-hati, buang kerjaan lokal mereka yang belum push) - Atau biarkan mereka rebase:
git pull --rebase - Cek GitHub Pages sudah rebuild
| Masalah | Penyebab umum | Solusi |
|---|---|---|
| Tidak bisa push | Remote sudah beda riwayat | Pakai --force-with-lease hanya jika memang sengaja rollback |
| Commit “hilang” | Setelah reset --hard | git reflog → reset/branch ke hash lama |
| Pages masih versi lama | Cache / belum rebuild | Tunggu 1–3 menit, hard refresh, cek Settings → Pages |
| Takut salah | — | Buat branch cadangan dulu, atau pakai revert saja |
• Coba dulu Revert di web atau
git revert jika hanya ingin membatalkan 1–2 commit.• Pakai reset --hard + force-with-lease hanya jika kamu sendirian di repo dan ingin branch persis seperti commit lama.
• Selalu simpan hash commit “maju” (atau branch backup) supaya bisa kembali.
Cheat sheet cepat
# Lihat riwayat
git log --oneline -15
git reflog
# Rollback aman (tambah commit pembatal)
git revert HASH --no-edit && git push
# Rollback keras ke HASH
git reset --hard HASH
git push --force-with-lease origin main
# Cadangan sebelum eksperimen
git branch backup-$(date +%Y%m%d)
# Maju lagi dari reflog
git reset --hard HEAD@{1} # atau hash dari reflog
git push --force-with-lease origin main