Aliran Kerja Profesional Git dan GitHub · Pelajaran

Git Bisect untuk Penyahpepijatan

Manfaatkan `git bisect` untuk mencari komit tertentu yang memperkenalkan pepijat dengan cekap, sekali gus menjimatkan masa penyahpepijatan.

Pelajaran 2 daripada 411 langkah

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 hanya git bisect bad jika komit itu ialah HEAD semasa 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.
  • 125 jika 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
fi

Menyelesaikan 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 reset bagi membersihkan keadaan selepas carian anda!
Percuma untuk bermula

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

  1. Git Reflog & Memulihkan Sejarah
  2. Git Bisect untuk Penyahpepijatan
  3. Penyelenggaraan & Pengemasan Repositori
  4. Menulis Semula Sejarah dengan git filter-repo
← Kembali ke Aliran Kerja Profesional Git dan GitHub