Git Reflog & Memulihkan Riwayat
Kuasai `git reflog` untuk memulihkan commit atau branch yang hilang sebagai jaring pengaman bagi pekerjaan Anda.
Git Reflog & Memulihkan Riwayat adalah pelajaran DevOps Bootcamp gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar DevOps Bootcamp, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus DevOps Bootcamp mencakup 4 pelajaran total.
Apa Itu Git Reflog?
Pernahkah Anda tidak sengaja menghapus cabang atau mengatur ulang ke commit yang salah? Jangan panik! Git memiliki jaring pengaman yang andal bernama Reflog.
Reflog (log referensi) adalah catatan tentang posisi HEAD dan penunjuk cabang di repositori lokal Anda.
Cara Reflog Melacak Riwayat
Berbeda dengan riwayat commit (git log) yang melacak perubahan pada berkas proyek Anda, reflog melacak perubahan pada referensi repositori Anda.
Setiap kali HEAD Anda (commit saat ini) atau penunjuk cabang berpindah, Git mencatat peristiwa tersebut di reflog. Ini mencakup:
- Membuat commit perubahan
- Beralih cabang
- Melakukan penggabungan atau pengubahan dasar
- Melakukan pengaturan ulang
- Mengkloning repositori
Melihat Reflog Anda
Untuk melihat reflog, Anda cukup menggunakan perintah git reflog. Perintah ini menampilkan daftar tindakan dan keadaan HEAD Anda pada saat itu.
Mari simulasikan beberapa tindakan, lalu lihat reflog:
git init my_repo
cd my_repo
echo "First line" > file.txt
git add file.txt
git commit -m "Initial commit"
echo "Second line" >> file.txt
git add file.txt
git commit -m "Add second line"
git reflogMenguraikan Entri Reflog
Setiap entri reflog memiliki format tertentu. Mari kita uraikan entri umum yang mungkin Anda lihat:
a1b2c3d HEAD@{0}: commit: Add new feature
a1b2c3d: Hash SHA-1 dari commit tempatHEADberada pada saat itu.HEAD@{0}: Ini adalah "penunjuk entri reflog".@{0}adalah keadaan terbaru,@{1}adalah keadaan sebelumnya, dan seterusnya.commit: Add new feature: Deskripsi tindakan yang menyebabkanHEADberpindah.
Penunjuk ini sangat penting untuk pemulihan!
Skenario: Memulihkan Commit yang Hilang
Bayangkan Anda membuat sebuah commit, lalu tidak sengaja membatalkannya dengan git reset --soft HEAD~1. Commit Anda tidak lagi berada dalam riwayat cabang saat ini, tetapi sebenarnya belum benar-benar hilang!
Reflog masih mengingatnya. Mari simulasikan kesalahan umum ini:
git init my_project_recovery
cd my_project_recovery
echo "Initial content" > start.txt
git add start.txt
git commit -m "Initial commit"
echo "Important feature" > feature.txt
git add feature.txt
git commit -m "Added an important feature"
# Oops! Accidentally reset
git reset --soft HEAD~1
git reflogMengembalikan Commit
Setelah pengaturan ulang, jika Anda menjalankan git reflog, Anda akan melihat entri untuk commit "Added an important feature", mungkin sebagai HEAD@{1} atau yang serupa.
Untuk memulihkannya, Anda dapat menggunakan git reset dengan entri reflog tersebut. Misalnya, jika hash commit yang hilang adalah abcdefg atau entri reflognya adalah HEAD@{1}:
# Assuming the lost commit was HEAD@{1} in the reflog
git reset --hard HEAD@{1}
# Or using the specific commit hash from reflog
# git reset --hard abcdefg
# Now, check your log. The commit is back!
git log --onelineSkenario: Mengambil Cabang yang Dihapus
Bagaimana jika Anda tidak sengaja menghapus seluruh cabang sebelum menggabungkannya, atau mengira Anda sudah tidak membutuhkannya?
Cabang hanyalah penunjuk ke commit. Jika Anda menghapus sebuah cabang, commit yang ditunjuknya tidak langsung dihapus dari repositori Anda. Reflog masih mengingat posisi HEAD cabang tersebut!
Memulihkan Cabang dari Reflog
Misalkan Anda memiliki cabang bernama feature-x, mengerjakannya, lalu menghapusnya dengan git branch -D feature-x.
Saat menjalankan git reflog, Anda mungkin melihat entri seperti:
1234567 HEAD@{5}: branch: Created branch feature-x atauabcdefg HEAD@{2}: checkout: moving from feature-x to master
Anda dapat menggunakan hash commit (misalnya, 1234567 atau abcdefg) dari entri reflog saat cabang tersebut aktif untuk membuatnya kembali:
# Assume 'feature-x' was deleted and its last commit was '1234567'
# Create a new branch pointing to that commit
git branch feature-x-recovered 1234567
# Now, check out your recovered branch
git checkout feature-x-recovered
# Verify its history
git log --onelineEntri Reflog Kedaluwarsa
Meskipun reflog merupakan jaring pengaman yang andal, entrinya tidak berlaku selamanya. Git menghapus entri reflog lama setelah jangka waktu tertentu.
- Secara bawaan, entri yang masih dapat dijangkau (dari
HEADsaat ini) kedaluwarsa setelah 90 hari. - Entri yang tidak dapat dijangkau (misalnya, dari cabang yang dihapus atau commit yang tidak lagi direferensikan) kedaluwarsa setelah 30 hari.
Artinya, sebaiknya Anda memulihkan pekerjaan yang "hilang" sesegera mungkin!
Tantangan Pemulihan Reflog
Anda membuat cabang fitur baru, membuat beberapa commit, lalu tidak sengaja menghapusnya tanpa menggabungkannya. Anda menjalankan git reflog dan melihat entri ini:
...
c0ffee1 HEAD@{3}: commit: Implement new user profile page
bada55e HEAD@{4}: checkout: moving from feature/profile to main
...Urutan perintah mana yang akan membuat kembali cabang feature/profile dengan benar dan mengarahkannya ke commit terbaru yang dimilikinya sebelum dihapus?
Reflog: Jaring Pengaman Git Anda
Anda telah menguasai git reflog, alat penting untuk memulihkan pekerjaan yang "hilang" di repositori Git lokal Anda. Ingatlah:
- Reflog melacak posisi
HEADdan penunjuk cabang. - Gunakan
git refloguntuk melihat riwayat ini. - Anda dapat memulihkan commit atau cabang menggunakan
git resetataugit branchdengan entri reflog (HEAD@{n}atau hash commit). - Entri reflog akan kedaluwarsa, jadi segera bertindak jika Anda perlu memulihkan sesuatu!
Jagalah agar riwayat Git tetap rapi, tetapi ketahuilah bahwa reflog tersedia untuk keadaan darurat!
Belajar DevOps Bootcamp dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 142
- Pelajaran
- 568
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Git Reflog & Memulihkan Riwayat” gratis?
Ya — teks lengkap “Git Reflog & Memulihkan Riwayat” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus DevOps Bootcamp, upgrade ke CoddyKit PRO. Kursus DevOps Bootcamp mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Git Reflog & Memulihkan Riwayat”?
Kuasai `git reflog` untuk memulihkan commit atau branch yang hilang sebagai jaring pengaman bagi pekerjaan Anda. Kamu berlatih DevOps Bootcamp dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai DevOps Bootcamp?
Tidak diperlukan pengalaman sebelumnya. DevOps Bootcamp di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Git Reflog & Memulihkan Riwayat” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran DevOps Bootcamp ini?
Ya. Setiap pelajaran DevOps Bootcamp menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Git Reflog & Memulihkan Riwayat
- Git Bisect untuk Debugging
- Pemeliharaan & Pembersihan Repositori
- Menulis Ulang Riwayat dengan git filter-repo