Git Lanjutan: Monorepo, Submodul dan Aliran Kerja · Pelajaran

Penyahpepijatan dengan Git Bisect

Gunakan `git bisect` untuk menentukan komit tepat yang memperkenalkan pepijat dengan cekap, sekali gus menjimatkan masa penyahpepijatan yang berharga.

Pelajaran 2 daripada 411 langkah

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 good

Mengecilkan 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 reset

Mengendalikan 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 skip

Mengautomatikkan 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.
  • 1-127 (kecuali 125): 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
fi

Semakan 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 start dan tentukan komit baik serta buruk.
  • Uji dan tandakan komit sebagai good atau bad.
  • Gunakan git bisect skip untuk komit yang tidak boleh diuji.
  • Automatikkan dengan git bisect run untuk penyahpepijatan pantas tanpa campur tangan manual.
  • Sentiasa akhiri dengan git bisect reset.

Selamat memburu pepijat!

Percuma untuk bermula

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

  1. Memulihkan Komit dan Cabang yang Hilang
  2. Penyahpepijatan dengan Git Bisect
  3. Mengoptimumkan Prestasi Repositori Git
  4. Menyelamatkan Kerja dengan Reflog dan Stash
← Kembali ke Git Lanjutan: Monorepo, Submodul dan Aliran Kerja