Penyahpepijatan dengan Git Bisect
Gunakan `git bisect` untuk menentukan komit tepat yang memperkenalkan pepijat dengan cekap, sekali gus menjimatkan masa penyahpepijatan yang berharga.
Penyahpepijatan dengan Git Bisect ialah pelajaran Git Lanjutan: Monorepo, Submodul dan Aliran Kerja 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 Git Lanjutan: Monorepo, Submodul dan Aliran Kerja, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Git Lanjutan: Monorepo, Submodul dan Aliran Kerja merangkumi sejumlah 4 pelajaran.
Apakah Git Bisect?
Bayangkan pepijat muncul dalam projek anda, tetapi anda tidak pasti perubahan terbaharu yang menyebabkannya. Memeriksa setiap komit secara manual boleh membazirkan banyak masa!
git bisect ialah perintah Git yang berkuasa dan menggunakan algoritma carian binari untuk mencari dengan cepat komit tepat yang memperkenalkan pepijat.
Kelebihan Carian Binari
Bagaimanakah git bisect berfungsi dengan begitu pantas? Ia seperti permainan 'panas atau sejuk' dengan sejarah komit anda.
- Anda memberitahu Git komit yang anda tahu buruk (mengandungi pepijat).
- Anda memberitahu Git komit yang anda tahu baik (sebelum pepijat itu wujud).
- Git memilih komit yang lebih kurang di tengah dan meminta anda mengujinya.
- Berdasarkan maklum balas anda, Git membahagikan ruang carian kepada separuh dan mengulanginya sehingga puncanya ditemui.
Memulakan Pencarian Bisect
Untuk bermula, anda perlu memberitahu Git bahawa anda sedang memulakan sesi bisect. Kemudian, tandakan komit 'buruk' yang diketahui dan komit 'baik' yang diketahui.
Anda boleh menggunakan cincangan komit, nama cabang atau teg.
git bisect start
git bisect bad HEAD
git bisect good <known_good_commit_hash>Proses Berulang: Uji & Tandakan
Selepas anda menentukan komit baik dan buruk, Git akan mendaftar keluar secara automatik komit di tengah julat tersebut. Tugas anda ialah menguji kod pada komit ini.
- Jika pepijat wujud, tandakannya sebagai buruk.
- Jika pepijat TIDAK wujud, tandakannya sebagai baik.
Git kemudian akan beralih ke komit seterusnya dan membahagikan ruang carian yang tinggal kepada separuh.
Menandakan Komit
Selepas anda menguji komit yang sedang didaftar keluar, gunakan perintah ini untuk memberitahu Git sama ada komit itu baik atau buruk:
- Untuk menandakan komit semasa sebagai buruk:
git bisect bad - Untuk menandakan komit semasa sebagai baik:
git bisect good
Git kemudian akan mendaftar keluar komit seterusnya untuk diuji secara automatik.
git bisect bad
# OR
git bisect goodMengecilkan Skop Masalah
Anda akan mengulangi proses 'uji dan tandakan'. Dengan setiap langkah, git bisect semakin menghampiri komit tunggal yang memperkenalkan pepijat. Kaedah ini jauh lebih pantas daripada memeriksa komit satu demi satu!
Untuk julat 100 komit, paling banyak 7 ujian diperlukan (log2(100) ≈ 6.64).
Punca Ditemui!
Akhirnya, git bisect akan mengecilkan julat kepada satu komit. Git kemudian akan melaporkan komit 'buruk' pertama yang ditemui, iaitu komit yang memperkenalkan pepijat!
Selepas menemui pepijat, anda perlu keluar daripada sesi bisect untuk mengembalikan repositori kepada keadaan asalnya (biasanya cabang yang anda gunakan ketika memulakan sesi).
git bisect resetMengendalikan Komit yang Tidak Boleh Diuji
Adakalanya, git bisect mungkin berhenti pada komit yang tidak boleh diuji (contohnya, komit itu tidak boleh dikompil atau kebergantungannya rosak). Dalam keadaan sedemikian, anda boleh memberitahu Git untuk melangkauinya:
git bisect skip
Git kemudian akan memilih komit lain untuk diuji dan memastikan komit yang dilangkau dikecualikan daripada julat pepijat yang berpotensi.
git bisect skipMengautomatikkan dengan Git Bisect Run
Untuk penyahpepijatan yang lebih pantas, anda boleh mengautomatikkan proses ujian menggunakan git bisect run. Perintah ini menerima skrip yang menjalankan ujian dan keluar dengan kod tertentu:
0: Komit adalah baik.(kecuali1-127125): Komit adalah buruk.125: Komit perlu dilangkau (contohnya, tidak boleh dibina).
Git kemudian akan menjalankan skrip secara automatik untuk setiap komit sehingga pepijat ditemui.
#!/bin/bash
# Example test script for git bisect run
# Replace 'make test' with your actual test command
if make test;
then
exit 0 # Tests passed, commit is good
else
exit 1 # Tests failed, commit is bad
fiSemakan Aliran Kerja Bisect
Manakah antara perintah berikut yang penting apabila menjalankan git bisect secara manual untuk mencari pepijat?
Kuasa Penyahpepijatan Diaktifkan!
Anda telah menguasai git bisect! Alat berkuasa ini mengubah pencarian pepijat daripada tugas yang membosankan kepada proses yang cekap dan sistematik menggunakan carian binari.
- Mulakan dengan
git bisect startdan tentukan komit baik serta buruk. - Uji dan tandakan komit sebagai
goodataubad. - Gunakan
git bisect skipuntuk komit yang tidak boleh diuji. - Automatikkan dengan
git bisect rununtuk penyahpepijatan pantas tanpa campur tangan manual. - Sentiasa akhiri dengan
git bisect reset.
Selamat memburu pepijat!
Pelajari Git Lanjutan: Monorepo, Submodul dan Aliran Kerja 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 “Penyahpepijatan dengan Git Bisect” percuma?
Ya — teks penuh “Penyahpepijatan dengan Git Bisect” 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 Git Lanjutan: Monorepo, Submodul dan Aliran Kerja, tingkat taraf kepada CoddyKit PRO. Kursus Git Lanjutan: Monorepo, Submodul dan Aliran Kerja merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Penyahpepijatan dengan Git Bisect”?
Gunakan `git bisect` untuk menentukan komit tepat yang memperkenalkan pepijat dengan cekap, sekali gus menjimatkan masa penyahpepijatan yang berharga. Anda berlatih Git Lanjutan: Monorepo, Submodul dan Aliran Kerja 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 Git Lanjutan: Monorepo, Submodul dan Aliran Kerja?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Git Lanjutan: Monorepo, Submodul dan Aliran Kerja 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 “Penyahpepijatan dengan Git Bisect” 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 Git Lanjutan: Monorepo, Submodul dan Aliran Kerja ini?
Ya. Setiap pelajaran Git Lanjutan: Monorepo, Submodul dan Aliran Kerja 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
- Memulihkan Komit dan Cabang yang Hilang
- Penyahpepijatan dengan Git Bisect
- Mengoptimumkan Prestasi Repositori Git
- Menyelamatkan Kerja dengan Reflog dan Stash