Git Reflog
Terakhir diperbarui
git reflog mencatat setiap tempat yang pernah ditunjuk HEAD: setiap commit, checkout, reset, dan rebase. Karena Git menyimpan commit-commit itu untuk sementara waktu bahkan setelah tidak lagi ada di branch mana pun, reflog adalah jaring pengamanmu: dengan reflog kamu bisa menemukan dan memulihkan pekerjaan yang seolah hilang akibat reset --hard, rebase yang keliru, atau branch yang terhapus.
Coba perintah-perintah ini di playground terminal: shell sungguhan di browsermu, tanpa perlu instalasi.
Sintaks
| Perintah | Fungsinya |
|---|---|
git reflog | Menampilkan posisi HEAD terakhir, lengkap dengan hash |
git reflog show <branch> | Menampilkan reflog sebuah branch |
git reset --hard HEAD@{1} | Memindahkan HEAD kembali ke posisi sebelumnya |
git branch recovered <hash> | Membuat ulang branch di commit yang hilang |
Pulih dari kesalahan
Batalkan reset yang keliru dengan menemukan commit sebelum reset.
| Langkah | Perintah | Hasil |
|---|---|---|
| 1 | git reflog | Temukan commit sebelum reset |
| 2 | git reset --hard HEAD@{1} | Kembalikan branch-mu ke sana |
Pertanyaan seputar git reflog
Apa itu git reflog?
HEAD (dan ujung setiap branch) di repositori lokalmu, setelah commit, checkout, reset, merge, dan rebase. Berbeda dengan git log yang mengikuti garis keturunan commit, reflog adalah catatan kronologis dari tindakanmu, dan itulah yang membuatnya berguna untuk pemulihan.Bagaimana cara memulihkan commit setelah git reset --hard?
git reflog untuk menemukan entri commit tempat kamu berada sebelum reset (misalnya HEAD@{1}), lalu git reset --hard <that-hash> (atau HEAD@{1}) untuk kembali ke sana. Commit itu sebenarnya tidak terhapus; hanya saja tidak ada branch yang menunjuknya, dan reflog masih tahu hash-nya.Bagaimana cara mengembalikan branch yang terhapus?
git reflog, lalu buat ulang branch di sana: git branch <name> <hash>. Selama penghapusannya belum lama (masih dalam batas kedaluwarsa reflog Git, biasanya beberapa minggu), commit-commit itu masih bisa dijangkau dengan cara ini.Apakah git reflog berlaku di semua clone?
Tidak. Reflog bersifat lokal di repositorimu dan tidak ikut di-push atau di-clone. Reflog hanya mencatat tindakan di komputermu. Itulah sebabnya reflog bisa menyelamatkan kesalahan lokal tapi tidak bisa memulihkan sesuatu yang hanya pernah ada di clone lain.
Bisakah saya berlatih ini secara online?
git reflog di shell sungguhan di browsermu, tanpa perlu instalasi. Kursus Git interaktif gratis dari Coddy juga membahas cara membatalkan perubahan dan memulihkannya langkah demi langkah.