Penutup Proyek 04 menyerahkan satu pekerjaan tertunda: gerbang review menjaga kualitas kode, bukan nasibnya — commit tetap bisa tertimpa reset, branch tetap bisa terhapus, dan berkas tetap bisa lenyap. Proyek ini melatih juru selamatnya. Kita membangun repository buku-resep yang cukup bersejarah, lalu menjalani satu hari buruk yang direkayasa penuh: dua bencana dijatuhkan secara sengaja, dan keduanya dipulihkan satu per satu dengan reflog sebagai peta. Hari ditutup dengan memasang jaring pengaman permanen berupa mirror dan bundle, supaya bencana berikutnya tidak perlu diselamatkan oleh keberuntungan.
Nada latihan ini sengaja dibuat tenang: semua “kehilangan” terjadi di sandbox yang kita kendalikan sendiri, pada data resep yang bisa dibangun ulang kapan saja. Justru karena bencananya aman, kita sempat berlatih ritual yang di situasi sungguhan sering terlewat — membaca keluaran dengan teliti, menahan diri dari bersih-bersih, dan memulihkan dengan sasaran yang sudah dipastikan.
Apa yang Kita Bangun #
Panggunya adalah buku resep warung: satu berkas sample.txt yang tumbuh bertahap dari resep sup jagung, gudeg, hingga rendang, ditutup catatan penyajian dan satu resep fusi hasil eksperimen. Riwayatnya tumbuh melewati empat babak:
- riwayat bersejarah — lima commit dibangun satu per satu, lalu
git reflogdibaca sebagai peta pergerakan HEAD, lengkap dengan notasiHEAD@{n}; - bencana pertama —
git reset --hard HEAD~2menelan dua commit terakhir; log menyusut jadi tiga, dan reflog memandu pemulihannya; - bencana kedua — branch
eksperimen/fusidengan dua commit dihapus paksa lewatgit branch -D; alamat terakhirnya diburu di reflog HEAD, branch dibangkitkan, lalu digabungkan kembali; - jaring pengaman — mirror dibangun dan dimutakhirkan, bundle dibungkus lalu diuji dengan clone penuh: sembilan commit identik dari satu berkas cadangan.
Hasil akhirnya: main memuat sembilan commit dengan sample.txt berisi lima seksi (sup, gudeg, rendang, catatan penyajian, dan bakso rendang fusi), sebuah mirror yang refs-nya identik dengan sumber, serta buku-resep.bundle yang terbukti bisa dihidupkan kembali sebagai repository utuh.
Peta Empat Bagian #
| Bagian | Fokus | Bekal utama | Perkiraan waktu |
|---|---|---|---|
| Bagian 1: Menggunakan Reflog | bangun lima commit, baca reflog, uraikan HEAD@{n} | git reflog | 15 menit |
| Bagian 2: Memulihkan Commit | reset --hard, log menyusut, pulih dari reflog | Memulihkan Commit , Reset Soft, Mixed, dan Hard | 20 menit |
| Bagian 3: Memulihkan Branch | -d ditolak, -D paksa, bangkitkan branch dan merge | Memulihkan Branch Terhapus , Menghapus Branch | 25 menit |
| Bagian 4: Membuat Backup Aman | mirror, remote update, bundle, uji pemulihan total | Backup Repository | 25 menit |
Total waktu pengerjaan sekitar 80–90 menit — satu sesi duduk yang utuh. Setiap bagian berdiri di atas keadaan akhir bagian sebelumnya, jadi kerjakan berurutan dari Bagian 1.
Prasyarat #
Materi berikut perlu dikuasai sebelum mulai; setiap konsep dipakai tanpa dijelaskan ulang di sini:
- catatan pergerakan HEAD dan notasi
HEAD@{n}— git reflog dari section Pemulihan dan Recovery; - teori dua jalur pemulihan commit — Memulihkan Commit ;
- mekanisme pemulihan branch terhapus — Memulihkan Branch Terhapus ;
- perilaku
git resetdan ketiga modusnya — Reset Soft, Mixed, dan Hard dari section Rebasing dan Riwayat Lanjutan; - perbedaan
git branch -ddan-D— Menghapus Branch dari section Branch dan Merging; - penggabungan dan fast-forward — git merge serta Fast-Forward Merge ;
- cadangan mirror dan bundle — Backup Repository .
Alat yang dipakai adalah Git 2.23 ke atas; seluruh sesi diuji nyata pada Git 2.47.3.
Struktur Proyek dan Transkrip #
Panggung hari buruk kita bernama proyek-05 dengan susunan berikut:
proyek-05/
├── buku-resep/ ← repository kerja (sample.txt + README.md)
│ ├── buku-resep.bundle ← bundle cadangan (satu berkas)
│ └── dari-bundle/ ← clone dari bundle (uji pemulihan total)
└── buku-resep-backup.git/ ← mirror (bare, tanpa working tree)Berkas README.md dan sample.txt yang menyertai halaman proyek ini memuat kondisi akhir repository — bandingkan isinya dengan hasil kerja kita setelah Bagian 4 selesai.
Repository bersejarahnya siap dibangun. Mari mulai pagi yang terasa baik-baik saja: Bagian 1: Menggunakan Reflog .
Bangun repository latihan lalu baca catatan pergerakan HEAD-nya.
Buka → # Bagian 2: Memulihkan CommitHilangkan commit lewat reset lalu pulihkan kembali lewat reflog.
Buka → # Bagian 3: Memulihkan BranchHapus branch lalu bangkitkan beserta seluruh commitnya.
Buka → # Bagian 4: Membuat Backup AmanBuat cadangan mirror dan bundle sebagai jaring pengaman terakhir.
Buka →