三分鐘教你學Git 十三 二分查詢

2021-09-08 12:44:02 字數 944 閱讀 7248

比方說你收到了錯誤報告,然後你知道前幾天明明是好的。可是這幾天有好多新的commit被部署了。那麼我們怎麼迅速的找到第乙個引入bug的commit呢?

我們能夠使用git bisect,git利用二分查詢法迅速找到第乙個壞的commit,下邊看看詳細怎麼用就明確了。

我們首先告訴git我們要開始binary search了。

# git bisect start

然後我們告訴git當前的commit是乙個壞的提交。

#git bisect bad

然後我們再告訴git我們已知的乙個好的提交,這樣子git就知道開始和結束的位置了,然後git會reset到中間的commit。

#git bisect good ad5e0

這時候我們就位於中間到乙個commit。我們能夠編譯執行看看執行結果。假設是好的。我們告訴git是好的。

#git bisect good

這時候git會在後半段中找到還有乙個中間commit,然後reset到此commit。我們編譯執行看看執行結果。假設是壞的,我們告訴git是壞的。

#git bisect bad

就這樣,你能夠在lg(n)次找到第乙個壞的commit。git找到後會給你列印出此commit的資訊。

我們找到這個commit之後,不要忘記退出bisect。

# git bisect reset

我們能夠看到儘管比較方便。但還不是全自己主動的,假設你能夠寫乙個指令碼執行當前的程式,假設驗證正確返回0,驗證錯誤返回1。那麼此過程就能夠全然自己主動,git能夠幫你自己主動找出第乙個壞的commit。

# git bisect start bad_commit good_commit

# git bisect run test-error.sh

原文:hongchangfirst

hongchangfirst的主頁:

三分鐘教你學Git 三 之技巧

先來看看幾個比較有用的技巧 git stash git reset hard 將暫存區,工作區,版本庫都恢復到某一次提交的狀態 soft 暫存區和工作區都不變,只改變版本庫的狀態 mixed 預設 將版本庫和暫存區都改變,不改變工作區 如果在commit之後進行push,發現別人在你之前做了push...

三分鐘教你學Git 八 之 刪除分支

並行的開發了很多的特性,建了很多的分支,時間長了分支就多了,想要把不用的分支刪除,怎麼辦呢?檢視本地都有哪些分支 git branch 檢視所有的分支,包括遠端的 git branch a 刪除本地的某個分支 git branch d hongchangfirst 刪除遠端的分支 git branc...

沉默三分鐘

網上見此真情之文,藉以自表 原文 http www.hecaitou.net p 3018 沉默三分鐘是心祭。那麼多年了,國旗終於為平民而降。那麼多天了,全民哀悼終於實現。與此同時,火炬停止傳遞,因為這不是乙個歡慶的時刻。很多年後回顧2008年,我 也許寧可它從日曆中消失。還沒有哪一年和今年一樣,才...