痛點
- 通過打印錯誤信息或者觀察現(xiàn)象帝璧,都難以找到Bug的由來褥琐。
- Git提交太多,很難一一驗證狂打。
實例
- 開始進(jìn)行二分法定位。
$ git bisect start
- 假設(shè)最近一次提交發(fā)現(xiàn)問題诬辈,將它標(biāo)記為bad酵使。
$ git bisect bad
- 找一個較早的沒有問題的版本,標(biāo)記為good焙糟。
$ git bisect good a67f7
二分查找開始生效口渔,自動定位到兩次標(biāo)記的中間版本。git自動checkout出中間版本穿撮,此時可以編譯運行以驗證好壞缺脉。
可以看到定位問題所需步數(shù)
-
如果中間版本有問題,標(biāo)記為bad, 否則good悦穿,自動切換到下一個中間版本攻礼,再驗證,如此往復(fù)栗柒。
最后一行就是罪魁禍?zhǔn)捉赴纾琤ug第一次出現(xiàn)的提交 - 針對最后一行得出的提交id,查看該提交的修改內(nèi)容瞬沦,找到問題所在太伊。可以通過以下命令回到初始狀態(tài)逛钻。
$ git bisect reset
延伸
高級用法可以查看
$ man git-bisect
或者參考 http://git-scm.com/book/en/v2/Git-Tools-Debugging-with-Git