DevOps Bootcamp · Pelajaran

Git Reflog & Memulihkan Riwayat

Kuasai `git reflog` untuk memulihkan commit atau branch yang hilang sebagai jaring pengaman bagi pekerjaan Anda.

Pelajaran 1 dari 411 langkah

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 reflog

Menguraikan 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 tempat HEAD berada 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 menyebabkan HEAD berpindah.

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 reflog

Mengembalikan 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 --oneline

Skenario: 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 atau
abcdefg 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 --oneline

Entri 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 HEAD saat 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 HEAD dan penunjuk cabang.
  • Gunakan git reflog untuk melihat riwayat ini.
  • Anda dapat memulihkan commit atau cabang menggunakan git reset atau git branch dengan 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!

Gratis untuk memulai

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

  1. Git Reflog & Memulihkan Riwayat
  2. Git Bisect untuk Debugging
  3. Pemeliharaan & Pembersihan Repositori
  4. Menulis Ulang Riwayat dengan git filter-repo
← Kembali ke DevOps Bootcamp