Hash nyata · commit yatim nyata · reflog nyata
Lihat apa yang sebenarnya dilakukan rebase
Rebase tidak memindahkan commit Anda. Ia menulis commit baru — dengan hash baru — dan meninggalkan yang asli di rak, tanpa ada yang menunjuknya, tapi belum hilang.
Ketik perintah git sungguhan, lalu perhatikan objeknya muncul, hash-nya berubah, dan sisa-sisanya menumpuk. Tidak ada yang dipasang, tidak ada yang diunggah, dan tidak ada yang Anda lakukan di sini bisa merusak repositori sungguhan.
Kerja yang sama, objek yang berbeda. Dua commit fitur disalin ke basis baru, jadi hash-nya berubah — dan yang asli masih di rak, tidak ditunjuk apa pun.
Tiga hal, dan seluruh modelnya
Commit itu kotak
Isinya snapshot utuh, dan namanya adalah hash dari isinya sendiri — termasuk kotak mana yang datang sebelumnya. Ubah isinya, atau ubah yang sebelumnya, maka itu kotak lain dengan nama lain. Kotak tidak pernah disunting.
Branch itu kartu
Branch hanyalah kartu dengan benang yang menuju satu kotak. Memindahkan branch berarti memindahkan benangnya. Tidak ada satu kotak pun yang tersentuh. HEAD adalah kartu yang bertanda sedang dipakai.
Yatim itu kotak tanpa kartu
Sesudah rebase atau hard reset, kotak lamanya masih ada di ruangan — hanya saja tidak ada lagi yang menunjuknya. Itulah arti sebenarnya dari "kerjaan saya hilang", dan itu sebabnya reflog bisa mengembalikannya.
Cara memakainya
- 01
Pilih riwayat awal
Buka sebuah skenario, atau susun sendiri dengan write, add, dan commit. Setiap skenario adalah skrip perintah yang diputar ulang saat dibuka.
- 02
Jalankan perintahnya
Ketik di command bar, persis seperti di terminal. Objek yang baru ditulis ditandai merah — merah itu adalah hash yang sedetik lalu belum ada.
- 03
Lihat apa yang tertinggal
Kotak yang memudar berarti tak terjangkau, bukan terhapus. Register mencatat setiap pergerakan ref, dan satu klik mengubah kotak yatim kembali jadi branch.
Belum pernah pakai rebase? Mulai dari skenario — masing-masing menyiapkan sebuah riwayat dan menyebutkan satu perintah yang layak dicoba berikutnya.
Apa yang nyata di sini, dan apa yang tidak
Hash di sini nyata dalam arti diturunkan dari isi objek dan konsisten secara internal — bukan identik dengan yang dihasilkan git di mesin Anda, karena git ikut memasukkan waktu committer dan identitas penulis. Simulator ini memakai jam virtual supaya setiap sesi bisa diulang persis.