Panduan Silverhawk WebLearn · Git & GitHub

Rollback & maju lagi
di repository

Cara mengembalikan repo ke keadaan sebelumnya (rollback), lalu maju lagi ke commit yang sudah pernah ada — lewat klik di website GitHub maupun perintah Git.

Mode amanRevert (direkomendasikan)
Mode kuatReset + force push
PlatformGitHub Web + CLI
Risiko dataBisa dikontrol

Konsep singkat

Setiap kali kamu commit + push, Git menyimpan “foto” project. Riwayatnya seperti timeline:

C
Commit terbaru (sekarang) — fitur diskusi, Supabase, dll.
B
Commit sebelumnya — misalnya setelah integrasi Supabase
A
Commit lebih lama — versi awal statis

Rollback = kembali ke A atau B.
Maju lagi = setelah rollback, kembali ke C (yang pernah ada).

CaraAman 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
Force push (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.

Riwayat tetap ada. Cocok jika yang dibatalkan hanya 1–beberapa commit terakhir, bukan “lompat jauh ke masa lalu”.

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).

Untuk rollback “keras” di branch 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.

Setelah force push, teman yang sudah clone harus menyesuaikan (lihat bagian tips). GitHub Pages akan mengikuti commit terbaru di branch yang di-set sebagai source.

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 origin lalu git 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
MasalahPenyebab umumSolusi
Tidak bisa pushRemote sudah beda riwayatPakai --force-with-lease hanya jika memang sengaja rollback
Commit “hilang”Setelah reset --hardgit reflog → reset/branch ke hash lama
Pages masih versi lamaCache / belum rebuildTunggu 1–3 menit, hard refresh, cek Settings → Pages
Takut salah—Buat branch cadangan dulu, atau pakai revert saja
Ringkas rekomendasi untuk WebLearn:
• 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