使用 git bisect 定位你的 BUG

Git 是開發(fā)者的好幫手,今天跟大家分享的是用 git bisect 來找到你代碼中的 bad commit 。

背景

你可能遇到過這種情況, 昨天下班前把模塊開發(fā)完了, 單元測試驗證通過, git commmit 蓋上電腦 開開心心下班啦 ??
第二天啥上午來了,繼續(xù)開發(fā),提交了幾個 commit ,下午部署了一個版本,發(fā)現(xiàn)昨天測試通過的代碼出現(xiàn)了 BUG ??
這個時間你會怎么做, 可能的翻出現(xiàn) BUG 代碼文件的 git log 一翻發(fā)現(xiàn) 有20個 commit ???
此時你的心情可能是崩潰的 ??

告別人肉排查 bad commit 借助 git bisect 找 BUG ??

具體方法

先通過 git log 命令 找到你確定代碼是 OK 的 git hash 再找到你當(dāng)前出現(xiàn) BUG 的 git hash

然后 使用 git bisect start 開始咱們的奇妙 debug 之旅 ??

開始對 commit 做標記

告訴 git 這個 commit(剛才找出來確定代碼是OK的 commit hash) 是 OK 的 git bisect good 5d5dba7

告訴 git 當(dāng)前最后一個 commit 代碼是有 BUG 的 git bisect bad 692ac39

git 會進行二分查找

然后開始開始 test 驗證當(dāng)前 hash 的 commit 的代碼是不是 OK 的

如果當(dāng)前代碼 test 不通過 就標記為 bad git bisect bad

反之如果當(dāng)前代碼 test 通過 就標記為 good git bisect good

反復(fù)的進行 test 和標記 直到找出那個 bad commit 為止

然后退出 git bisect 模式 git bisect reset

附上操作流程圖
git bisect

附上官方文檔 Git Docs

附上二分查找可視化動畫 binary search visualization

附上我的命令行操作記錄

wujunze@Mac: ~/monkey/code/monkey-api develop
 $ git bisect start                                                                                                                                              [20:31:46]
 
wujunze@Mac: ~/monkey/code/monkey-api develop
 $ git logg                                                                                                                                                      [20:31:50]
 
wujunze@Mac: ~/monkey/code/monkey-api develop
 $ git bisect good 16e91a8                                                                                                                                       [20:31:54]
 
wujunze@Mac: ~/monkey/code/monkey-api develop
 $ git logg                                                                                                                                                      [20:31:59]
 
wujunze@Mac: ~/monkey/code/monkey-api develop
 $ git bisect bad 692ac39                                                                                                                                        [20:32:04]
Bisecting: 9 revisions left to test after this (roughly 3 steps)
[cd1a0814fe21aa3e06020efb5aa4118ead17acce] not filter
 
wujunze@Mac: ~/monkey/code/monkey-api cd1a081
 $ git bisect bad                                                                                                                                                [20:32:07]
Bisecting: 4 revisions left to test after this (roughly 2 steps)
[63bf3176854a4fe112d612cee3f6bacce9e77e7d] fix merge
 
wujunze@Mac: ~/monkey/code/monkey-api 63bf317
 $ git bisect good                                                                                                                                               [20:32:11]
Bisecting: 2 revisions left to test after this (roughly 1 step)
[798239a0397c52127c721b8b84bb430b5fd0e83b] debug
 
wujunze@Mac: ~/monkey/code/monkey-api 798239a
 $ git bisect bad                                                                                                                                                [20:32:14]
Bisecting: 0 revisions left to test after this (roughly 0 steps)
[5d5dba7c3fc947768cc609493de9808f3d9cf635] fix assert logic
 
wujunze@Mac: ~/monkey/code/monkey-api 5d5dba7
 $ git bisect bad                                                                                                                                                [20:32:23]
5d5dba7c3fc947768cc609493de9808f3d9cf635 is the first bad commit
commit 5d5dba7c3fc947768cc609493de9808f3d9cf635
Author: wujunze <itwujunze@163.com>
Date:   Tue Oct 29 18:20:36 2019 +0800

    fix assert logic

:040000 040000 b5d77b6ac82d8427d1bc3a9db2213f6c10ea0d63 3f49c18b6569282f7fa2a2c935b9ba73d6d0fbc0 M      app
 
wujunze@Mac: ~/monkey/code/monkey-api 5d5dba7
 $ git bisect reset                                                                                                                                              [20:32:27]
Previous HEAD position was 5d5dba7 fix assert logic
Switched to branch 'develop'
Your branch is up to date with 'origin/develop'.
 
wujunze@Mac: ~/monkey/code/monkey-api develop
 $                                                                                                                                                               [20:36:38]                                                                               

百聞不如一 Run 大家可以自己試一下 有什么問題可以在文章下面評論

筆者才疏學(xué)淺,倉促成文,如有不當(dāng)之處,還請大家斧正.

本文由 吳鈞澤博客 發(fā)布!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市碳锈,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌欺抗,老刑警劉巖殴胧,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異佩迟,居然都是意外死亡团滥,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門报强,熙熙樓的掌柜王于貴愁眉苦臉地迎上來灸姊,“玉大人,你說我怎么就攤上這事秉溉×撸” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵召嘶,是天一觀的道長父晶。 經(jīng)常有香客問我,道長弄跌,這世上最難降的妖魔是什么甲喝? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮铛只,結(jié)果婚禮上埠胖,老公的妹妹穿的比我還像新娘。我一直安慰自己淳玩,他們只是感情好直撤,可當(dāng)我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蜕着,像睡著了一般谋竖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上承匣,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天蓖乘,我揣著相機與錄音,去河邊找鬼悄雅。 笑死驱敲,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的宽闲。 我是一名探鬼主播众眨,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼握牧,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了娩梨?” 一聲冷哼從身側(cè)響起沿腰,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎狈定,沒想到半個月后颂龙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡纽什,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年措嵌,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片芦缰。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡企巢,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出让蕾,到底是詐尸還是另有隱情浪规,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布探孝,位于F島的核電站笋婿,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏顿颅。R本人自食惡果不足惜缸濒,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望元镀。 院中可真熱鬧绍填,春花似錦、人聲如沸栖疑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽遇革。三九已至,卻和暖如春揭糕,著一層夾襖步出監(jiān)牢的瞬間萝快,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工著角, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留揪漩,地道東北人。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓吏口,卻偏偏與公主長得像奄容,于是被迫代替她去往敵國和親冰更。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容