Git Bisect
Terakhir diperbarui
git bisect menemukan commit yang memunculkan bug dengan binary search. Kamu memberi tahu satu commit yang pasti baik dan satu yang pasti rusak; Git melakukan checkout ke commit di tengah-tengahnya, kamu menandainya good atau bad, dan rentangnya menyempit setengah setiap kali. Jadi pelakunya ketemu dalam beberapa langkah saja, bahkan di antara ribuan commit.
Coba perintah-perintah ini di playground terminal: shell sungguhan di browsermu, tanpa perlu instalasi.
Sintaks
| Perintah | Fungsinya |
|---|---|
git bisect start | Memulai sesi bisect |
git bisect bad | Menandai commit saat ini sebagai rusak |
git bisect good <hash> | Menandai commit yang pasti baik |
git bisect good / git bisect bad | Menandai setiap commit yang diuji |
git bisect run ./test.sh | Otomatis: menjalankan tes untuk menandai setiap langkah |
git bisect reset | Mengakhiri bisect, kembali ke branch-mu |
Contoh langkah demi langkah
Cari commit mana yang merusak build.
| Langkah | Perintah | Hasil |
|---|---|---|
| 1 | git bisect start | Memulai pencarian |
| 2 | git bisect bad | Commit saat ini rusak |
| 3 | git bisect good v1.0 | Tag lama ini masih berfungsi |
| 4 | Uji, lalu good/bad | Ulangi sampai Git menyebutkan commit-nya |
Pertanyaan seputar git bisect
Apa fungsi git bisect?
Perintah ini melakukan binary search pada riwayat commit-mu untuk menemukan commit persis yang memunculkan bug. Kamu menandai satu commit sebagai good dan satu sebagai bad; Git berulang kali melakukan checkout ke titik tengahnya agar kamu uji, dan rentang pencarian terbagi dua setiap kali sampai commit rusak pertama ditemukan.
Bagaimana cara memakai git bisect?
git bisect start, tandai keadaan rusak saat ini dengan git bisect bad, dan commit yang diketahui berfungsi dengan git bisect good <hash>. Git melakukan checkout ke titik tengah; uji, lalu jalankan git bisect good atau git bisect bad. Ulangi sampai Git melaporkan commit rusak pertama, lalu jalankan git bisect reset.Bisakah git bisect diotomatiskan?
git bisect run <script> menjalankan script-mu di setiap langkah. Script harus keluar dengan kode 0 untuk commit yang baik dan bukan 0 untuk commit yang rusak (test runner cocok untuk ini). Git lalu melakukan bisect secara otomatis tanpa kamu menandai setiap commit secara manual, dan menampilkan commit penyebabnya di akhir.Bagaimana cara menyelesaikan bisect?
git bisect reset untuk mengakhiri sesi dan kembali ke branch dan commit tempat kamu berada sebelum mulai. Lakukan ini baik kamu menemukan commit rusaknya atau tidak, karena perintah ini membersihkan keadaan bisect sementara.Bisakah saya berlatih ini secara online?
git bisect di shell sungguhan di browsermu, tanpa perlu instalasi. Kursus Git interaktif gratis dari Coddy juga membahas cara memeriksa riwayat langkah demi langkah.