Git Bisect untuk Penyahpepijatan
Manfaatkan `git bisect` untuk mencari komit tertentu yang memperkenalkan pepijat dengan cekap, sekali gus menjimatkan masa penyahpepijatan.
Git Bisect untuk Penyahpepijatan ialah pelajaran Aliran Kerja Profesional Git dan GitHub percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Aliran Kerja Profesional Git dan GitHub, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Aliran Kerja Profesional Git dan GitHub merangkumi sejumlah 4 pelajaran.
Mencari Pepijat dengan Lebih Cepat menggunakan Git
Penyahpepijatan boleh menjadi sukar. Kadangkala pepijat muncul dan anda tidak tahu perubahan yang menyebabkannya.
git bisect ialah perintah Git yang berkuasa untuk membantu anda menentukan komit tepat yang memperkenalkan pepijat. Perintah ini menggunakan algoritma carian binari untuk mengecilkan skop dengan cepat daripada beribu-ribu komit.
Kuasa Carian Binari
Bayangkan projek anda mempunyai 100 komit dan pepijat muncul di suatu tempat antara komit pertama dengan komit terakhir. Memeriksa setiap komit secara manual akan mengambil masa yang lama!
git bisect berfungsi seperti permainan "teka nombor":
- Anda memberitahu Git komit yang "baik" (ketika pepijat belum wujud).
- Anda memberitahu Git komit yang "buruk" (ketika pepijat wujud).
- Git memilih komit yang lebih kurang di tengah dan meminta anda mengujinya.
- Anda menandakannya sebagai "baik" atau "buruk", lalu Git membahagikan ruang carian kepada separuh.
Mari Mulakan Carian!
Untuk bermula, anda perlu memberitahu Git bahawa anda sedang memulakan sesi bisect. Perintah ini memulakan proses:
git bisect start
Selepas bermula, anda akan menentukan komit "buruk" yang diketahui (ketika pepijat wujud) dan komit "baik" yang diketahui (ketika pepijat sememangnya tidak wujud).
Selalunya, komit "buruk" ialah HEAD semasa anda, manakala komit "baik" mungkin teg keluaran yang lebih lama atau komit dari beberapa hari sebelumnya.
Menandakan Sempadan Komit Anda
Setelah anda memulakan git bisect, anda menentukan julat carian:
- Komit Buruk: Ini ialah komit yang anda tahu mengandungi pepijat. Gunakan
git bisect bad <commit-hash>atau hanyagit bisect badjika komit itu ialahHEADsemasa anda. - Komit Baik: Ini ialah komit yang anda tahu tidak mengandungi pepijat. Gunakan
git bisect good <commit-hash>.
Git kemudiannya akan beralih secara automatik ke komit di tengah julat ini.
Menguji & Mengecilkan Skop
Selepas anda menandakan komit baik dan buruk, Git akan beralih secara automatik ke komit di tengah julat tersebut. Tugas anda adalah menguji kod pada komit yang dipilih ini.
- Jika pepijat IS wujud, taip
git bisect bad. - Jika pepijat IS NOT wujud, taip
git bisect good.
Git kemudiannya akan memilih komit lain di tengah julat yang masih ada. Ulangi langkah ini sehingga Git menemui komit "buruk" yang pertama.
Mensimulasikan Kemunculan Pepijat
Mari kita bayangkan "pepijat" mudah dalam sebuah skrip. Kita akan mensimulasikan sejarah projek yang memperkenalkan satu ralat kecil.
Berikut ialah skrip "baik" awal kita:
main.sh
#!/bin/bash
echo "Hello from script!"
sum=0
for i in $(seq 1 3); do
sum=$((sum + i))
done
echo "Sum is: $sum"Panduan Bisect Manual
Sekarang, katakan komit yang lebih baharu telah mengubah gelung kepada seq 1 4 secara tidak sengaja, menyebabkan jumlah menjadi salah (10 dan bukannya 6).
Kita akan bermula dengan:
git bisect start
Kemudian tandakan HEAD semasa kita (ketika pepijat wujud) sebagai buruk:
git bisect bad HEAD
Dan tandakan komit lama yang diketahui berfungsi sebagai baik:
git bisect good <old_good_commit_hash>
Git kemudiannya akan membimbing anda dengan beralih ke komit-komit tertentu. Anda akan menjalankan ./main.sh, melihat sama ada jumlahnya 6 atau 10, kemudian menaip git bisect good atau git bisect bad mengikut keadaan.
Mengautomatikkan Proses Penyahpepijatan
Menguji setiap komit secara manual masih boleh mengambil masa jika ujiannya rumit. git bisect run membolehkan anda mengautomatikkan proses ini!
Anda menyediakan skrip yang keluar dengan:
0(sifar) jika komit itu baik.125jika komit itu patut dilangkau.- Sebarang nilai bukan sifar yang lain (contohnya,
1) jika komit itu buruk.
Git akan melaksanakan skrip ini pada setiap komit yang diuji sehingga pepijat ditemui.
#!/bin/bash
./main.sh | grep "Sum is: 6"
if [ $? -eq 0 ]; then
exit 0 # Good commit
else
exit 1 # Bad commit
fiMenyelesaikan Carian Anda
Setelah git bisect berjaya mengenal pasti komit buruk yang pertama, perintah itu akan memberitahu anda cincangan komit dan mesejnya.
Selepas anda menemui puncanya dan memahami isu tersebut, anda perlu menetapkan semula repositori kepada keadaan asalnya sebelum bisect dimulakan:
git bisect reset
Perintah ini membawa anda kembali kepada komit yang anda gunakan ketika memulakan bisect dan membersihkan keadaan bisect sementara.
Semakan Pengetahuan Bisect
Anda baru sahaja menjalankan git bisect start, menandakan HEAD semasa sebagai buruk dan komit yang lebih lama sebagai baik. Git beralih ke komit di tengah.
Anda menjalankan ujian dan mendapati pepijat IS PRESENT pada komit di tengah ini.
Ulang Kaji `git bisect`
Tahniah! Anda telah mempelajari cara menggunakan git bisect:
- Ia ialah alat berkuasa untuk mencari komit tepat yang memperkenalkan pepijat.
- Ia menggunakan carian binari untuk kecekapan.
- Anda menentukan komit "baik" (bebas pepijat) dan "buruk" (mengandungi pepijat).
- Anda boleh mengautomatikkan proses ujian dengan
git bisect run <script>. - Sentiasa ingat untuk menjalankan
git bisect resetbagi membersihkan keadaan selepas carian anda!
Pelajari Aliran Kerja Profesional Git dan GitHub 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
- 12
- Pelajaran
- 48
Soalan Lazim
Adakah pelajaran “Git Bisect untuk Penyahpepijatan” percuma?
Ya — teks penuh “Git Bisect untuk Penyahpepijatan” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Aliran Kerja Profesional Git dan GitHub, tingkat taraf kepada CoddyKit PRO. Kursus Aliran Kerja Profesional Git dan GitHub merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Git Bisect untuk Penyahpepijatan”?
Manfaatkan `git bisect` untuk mencari komit tertentu yang memperkenalkan pepijat dengan cekap, sekali gus menjimatkan masa penyahpepijatan. Anda berlatih Aliran Kerja Profesional Git dan GitHub 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 Aliran Kerja Profesional Git dan GitHub?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Aliran Kerja Profesional Git dan GitHub 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 2 daripada 4.
Berapa lamakah pelajaran “Git Bisect untuk Penyahpepijatan” 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 Aliran Kerja Profesional Git dan GitHub ini?
Ya. Setiap pelajaran Aliran Kerja Profesional Git dan GitHub 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