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 reflog dibaca sebagai peta pergerakan HEAD, lengkap dengan notasi HEAD@{n};
  • bencana pertama — git reset --hard HEAD~2 menelan dua commit terakhir; log menyusut jadi tiga, dan reflog memandu pemulihannya;
  • bencana kedua — branch eksperimen/fusi dengan dua commit dihapus paksa lewat git 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 #

BagianFokusBekal utamaPerkiraan waktu
Bagian 1: Menggunakan Reflogbangun lima commit, baca reflog, uraikan HEAD@{n}git reflog15 menit
Bagian 2: Memulihkan Commitreset --hard, log menyusut, pulih dari reflogMemulihkan Commit , Reset Soft, Mixed, dan Hard20 menit
Bagian 3: Memulihkan Branch-d ditolak, -D paksa, bangkitkan branch dan mergeMemulihkan Branch Terhapus , Menghapus Branch25 menit
Bagian 4: Membuat Backup Amanmirror, remote update, bundle, uji pemulihan totalBackup Repository25 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:

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:

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