Git Reflog & Memulihkan Sejarah
Kuasai `git reflog` untuk memulihkan komit atau cabang yang hilang sebagai jaringan keselamatan untuk kerja anda.
Git Reflog & Memulihkan Sejarah ialah pelajaran Kem Intensif DevOps percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Kem Intensif DevOps, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Kem Intensif DevOps merangkumi sejumlah 4 pelajaran.
Apakah itu Git Reflog?
Pernahkah anda terpadam cawangan atau menetapkan semula kepada komit yang salah secara tidak sengaja? Jangan panik! Git mempunyai jaringan keselamatan yang berkuasa bernama Reflog.
Reflog (log rujukan) ialah rekod tentang lokasi HEAD dan penunjuk cawangan anda sebelum ini dalam repositori tempatan anda.
Cara Reflog Menjejaki Sejarah
Tidak seperti sejarah komit (git log) yang menjejaki perubahan dalam fail projek anda, reflog menjejaki perubahan pada rujukan repositori anda.
Setiap kali HEAD anda (komit semasa anda) atau penunjuk cawangan bergerak, Git merekodkan peristiwa ini dalam reflog. Ini termasuk:
- Melakukan komit perubahan
- Beralih cawangan
- Menggabungkan atau menyusun semula asas
- Melakukan tetapan semula
- Mengklon repositori
Melihat Reflog Anda
Untuk melihat reflog anda, gunakan sahaja perintah git reflog. Perintah ini memaparkan senarai tindakan dan keadaan HEAD anda pada masa tersebut.
Mari kita simulasikan beberapa tindakan, kemudian 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 reflogMentafsir Entri Reflog
Setiap entri reflog mempunyai format tertentu. Mari kita huraikan entri biasa yang mungkin anda lihat:
a1b2c3d HEAD@{0}: commit: Add new feature
a1b2c3d: Cincangan SHA-1 bagi komit yang menjadi lokasiHEADpada masa tersebut.HEAD@{0}: Ini ialah "penunjuk entri reflog".@{0}ialah keadaan paling terkini,@{1}ialah keadaan sebelumnya, dan seterusnya.commit: Add new feature: Perihalan tindakan yang menyebabkanHEADbergerak.
Penunjuk ini amat penting untuk pemulihan!
Senario: Memulihkan Komit yang Hilang
Bayangkan anda telah membuat komit, kemudian membatalkannya secara tidak sengaja dengan git reset --soft HEAD~1. Komit anda tidak lagi berada dalam sejarah cawangan semasa, tetapi sebenarnya komit itu belum hilang!
Reflog masih mengingatinya. Mari kita simulasikan kesilapan biasa 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 Komit
Selepas tetapan semula, jika anda menjalankan git reflog, anda akan melihat entri untuk komit "Added an important feature" anda, mungkin sebagai HEAD@{1} atau yang serupa.
Untuk memulihkannya, anda boleh menggunakan git reset bersama entri reflog. Sebagai contoh, jika cincangan komit yang hilang ialah abcdefg atau entri reflognya ialah 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 --onelineSenario: Mendapatkan Semula Cawangan yang Dipadam
Bagaimana jika anda terpadam seluruh cawangan secara tidak sengaja sebelum menggabungkannya, atau menyangka anda tidak lagi memerlukannya?
Cawangan hanyalah penunjuk kepada komit. Jika anda memadamkan cawangan, komit yang ditunjuknya tidak terus dikeluarkan daripada repositori anda. Reflog masih mengingati lokasi HEAD cawangan tersebut!
Memulihkan Cawangan daripada Reflog
Anggaplah anda mempunyai cawangan bernama feature-x, telah mengusahakannya, kemudian memadamkannya dengan git branch -D feature-x.
Apabila anda menjalankan git reflog, anda mungkin melihat entri seperti ini:
1234567 HEAD@{5}: branch: Created branch feature-x atauabcdefg HEAD@{2}: checkout: moving from feature-x to master
Anda boleh menggunakan cincangan komit (contohnya, 1234567 atau abcdefg) daripada entri reflog ketika cawangan itu aktif untuk menciptanya semula:
# 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 Tamat Tempoh
Walaupun reflog ialah jaringan keselamatan yang berkuasa, entrinya tidak kekal selama-lamanya. Git akan membersihkan entri reflog lama selepas tempoh tertentu.
- Secara lalai, entri yang boleh dicapai (daripada
HEADsemasa anda) tamat tempoh selepas 90 hari. - Entri yang tidak boleh dicapai (contohnya, daripada cawangan atau komit yang dipadam dan tidak lagi dirujuk) tamat tempoh selepas 30 hari.
Ini bermakna sebaik-baiknya pulihkan kerja yang "hilang" lebih awal!
Cabaran Pemulihan Reflog
Anda telah mencipta cawangan ciri baharu, membuat beberapa komit, kemudian memadamkannya secara tidak sengaja 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 manakah yang akan mencipta semula cawangan feature/profile dengan betul, supaya menunjuk kepada komit terbaharu yang dimilikinya sebelum dipadamkan?
Reflog: Jaringan Keselamatan Git Anda
Anda telah menguasai git reflog, alat penting untuk memulihkan kerja yang "hilang" dalam repositori Git tempatan anda. Ingat perkara berikut:
- Reflog menjejaki lokasi
HEADdan penunjuk cawangan sebelum ini. - Gunakan
git refloguntuk melihat sejarah ini. - Anda boleh memulihkan komit atau cawangan menggunakan
git resetataugit branchbersama entri reflog (HEAD@{n}atau cincangan komit). - Entri reflog akan tamat tempoh, jadi bertindak segera jika anda perlu memulihkan sesuatu!
Pastikan sejarah Git anda kemas, tetapi ketahuilah bahawa reflog tersedia untuk keadaan kecemasan!
Pelajari Kem Intensif DevOps dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 142
- Pelajaran
- 568
Soalan Lazim
Adakah pelajaran “Git Reflog & Memulihkan Sejarah” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Kem Intensif DevOps, termasuk “Git Reflog & Memulihkan Sejarah”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Kem Intensif DevOps merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Git Reflog & Memulihkan Sejarah”?
Kuasai `git reflog` untuk memulihkan komit atau cabang yang hilang sebagai jaringan keselamatan untuk kerja anda. Anda berlatih Kem Intensif DevOps menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Kem Intensif DevOps?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Kem Intensif DevOps di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.
Berapa lamakah pelajaran “Git Reflog & Memulihkan Sejarah” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Kem Intensif DevOps ini?
Ya. Setiap pelajaran Kem Intensif DevOps menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Git Reflog & Memulihkan Sejarah
- Git Bisect untuk Penyahpepijatan
- Penyelenggaraan & Pengemasan Repositori
- Menulis Semula Sejarah dengan git filter-repo