แต่ไม่เป็นไร git มีเครื่องมือที่เรียกว่า 'bisect' สำหรับหาว่า commit ไหนเป็นตัวปัญหา
การใช้งานเริ่มด้วยคำสั่ง
$ git bisect start
จากนั้นก็ mark ว่า revision ที่กำลังทำงานอยู่มันไม่ดี
$ git bisect bad
บอกมันด้วยว่า revision ไหนที่มันยังดีอยู่
$ git bisect good
git ก็จะจัดการ checkout revision ที่อยู่ตรงกลางระหว่าง bad กับ good ให้
เราก็แค่บอกมันว่า revision ปัจจุบันที่ใช้งานอยู่มัน bad หรือ มัน good
กรณีของผม ผมทดสอบแล้วยัง error อยู่ก็เลยสั่ง
$ git bisect bad
Bisecting: 10 revisions left to test after this
[2c6383f3664f50b2121ba5d455d595a60c3aa85c] prototype for flex chart component.
ทำไปเรื่อยๆ จนกว่าจะจับ commit ที่มีปัญหาได้ ซึ่งมันจะฟ้องว่า
$ git bisect good
4bc966d79eb3cd7ec10672863b6c97b26f401ea7 is first bad commit
commit 4bc966d79eb3cd7ec10672863b6c97b26f401ea7
Author: pphetra
Date: Thu Aug 6 05:58:20 2009 +0000
หลังจากได้ revision ที่เป็นปัญหา ก็เป็นหน้าที่เราแล้วที่ต้องไปไล่ดู diff file ว่าอะไรที่ทำให้มันพัง
ก่อนจะออกไปก็ให้ clear สถานะ git bisect ด้วยคำสั่ง
git bisect reset
Note: กรณีที่มี Makefile ให้ run จาก command line, เราสามารถใช้คำสั่ง
git bisect run
ได้เลย