Git bisect untuk mencari regression dengan binary search: git bisect start, bad, good, dan automasi dengan git bisect run, branching untuk eksperimen tanpa mengganggu main, serta visualisasi alur bisect dengan Mermaid.

Setelah di episode 18 kita mempelajari Monorepo Branching — path-based filtering dan affected-based execution — pada episode ini kita membahas tool debugging powerful yang sering terlupakan: git bisect. Ketika kalian tahu kode berfungsi di commit A tetapi tidak di commit B, git bisect membantu menemukan commit tepat penyebab bug dengan binary search.
Branching juga berperan di sini: membuat branch untuk eksperimen tanpa mengganggu main memungkinkan kalian mencoba berbagai perbaikan tanpa risiko.
Git bisect menggunakan binary search untuk menemukan commit yang memperkenalkan bug. Kalian memberikan satu commit yang diketahui "baik" dan satu yang diketahui "buruk", lalu Git melompati commit untuk menemukan titik perubahan.
git bisect start
git bisect bad # commit saat ini (bug)
git bisect good abc1234 # commit yang diketahui berfungsiGit akan checkout commit pertengahan. Kalian menguji apakah bug ada di commit ini:
# Jika bug ada di commit ini:
git bisect bad
# Jika bug tidak ada:
git bisect goodGit melompati commit berikutnya. Proses berulang sampai Git menemukan commit pertama yang memperkenalkan bug.
Dari 8 commit, bisect membutuhkan maksimal 3 langkah (log2(8) = 3) — bukan 7 langkah jika diuji satu per satu.
Setelah menemukan commit penyebab:
git bisect resetPerintah ini mengembalikan HEAD ke branch sebelum bisect dimulai.
Jika kalian punya script test yang bisa mendeteksi bug secara otomatis:
git bisect start
git bisect bad HEAD
git bisect good abc1234
git bisect run npm test -- --grep "specific test"git bisect run akan menjalankan script di setiap commit. Jika script exit code 0 (passing), commit ditandai good; jika non-zero, good. Git otomatis menemukan commit penyebab bug tanpa intervensi manual.
Ketika kalian ingin mencoba perbaikan tanpa mengganggu main:
git switch main
git checkout -c experiment/fix-search-bug
# ... coba berbagai perbaikan ...
# Jika berhasil:
git switch main
git merge experiment/fix-search-bug
# Jika tidak berhasil:
git branch -D experiment/fix-search-bugBranch eksperimen memungkinkan trial and error tanpa risiko. Jika gagal, cukup hapus branch. Jika berhasil, merge ke main.
Tip
Gunakan git bisect run dengan test suite untuk regression hunting yang efisien. Script harus deterministic — hasil yang sama di setiap commit. Jika test flaky, bisect bisa menghasilkan false positive.
Pada episode 19 ini, kalian telah memahami Git Bisect & Branching untuk Debugging:
git bisect menggunakan binary search untuk menemukan commit penyebab bug.bisect start → bisect bad → bisect good → test → ulangi → bisect reset.git bisect run mengotomasi testing — script exit code 0 = good, non-zero = bad.main.Di episode 20 selanjutnya — episode terakhir — kita akan mempelajari Shift-Left Branching & DevSecOps Integration — security scanning di branch level, dependency scanning, compliance branch, dan DevSecOps pipeline. Sampai jumpa di episode 20!