5 phút đọc

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
0good
khác 0bad
125bỏ 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.