Bisect
Bisect
Bug xuất hiện đâu đó trong hàng trăm commit mà bạn không biết ở đâu? Bisect tìm ra thủ phạm chỉ trong vài bước nhờ tìm kiếm nhị phân binary search.
1. Bisect là gì?
Bạn cho Git biết một commit good (chạy tốt) và một commit bad (bị lỗi). Bisect liên tục checkout commit ở giữa, hỏi good hay bad, rồi loại bỏ một nửa. Với 1000 commit chỉ cần ~10 lần kiểm tra.
2. Quy trình thủ công
git bisect start
git bisect bad # commit hiện tại bị lỗi
git bisect good v1.2.0 # commit cũ chạy tốt
# Git checkout commit giữa, bạn test rồi báo:
git bisect good # hoặc: git bisect bad
# ... lặp tới khi tìm ra "first bad commit"
git bisect reset
3. Tự động hóa
Bisect run tự chạy script ở mỗi bước theo exit code:
| Exit code | Ý nghĩa |
|---|---|
| 0 | good |
| khác 0 | bad |
| 125 | bỏ qua commit (không test được) |
git bisect run ./test-bug.sh
Cách nhớ nhanh
Bisect = chia đôi để tìm thủ phạm. Cần một mốc good và một mốc bad; mỗi bước cắt nửa lịch sử. Nhớ git bisect reset khi xong để rời detached HEAD.