偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

使用 Git bisect 命令定位首次引入錯(cuò)誤的提交

系統(tǒng) Linux
Git 的 bisect 工具通過快速識別壞的提交,節(jié)省了時(shí)間和精力。

你是不是有過這樣的經(jīng)歷:發(fā)現(xiàn)代碼中有 錯(cuò)誤bug,但不知道這個(gè)錯(cuò)誤是什么時(shí)候引入的。這有可能是因?yàn)?,某個(gè)人提交了一份有錯(cuò)誤的代碼,但沒有在他的 Git 提交commit 消息中聲明它。這個(gè)錯(cuò)誤可能已經(jīng)存在了幾周、幾個(gè)月甚至幾年,這意味著你需要搜索數(shù)百或數(shù)千個(gè)提交,才能找到問題何時(shí)出現(xiàn)的。而 ??git bisect?? 命令能夠完美地解決這個(gè)問題!

??git bisect?? 命令是一個(gè)強(qiáng)大的工具。你可以給 ??git bisect?? 命令一個(gè)范圍,一端是一個(gè)已知的好狀態(tài),另一端是一個(gè)已知的壞狀態(tài)。它會(huì)自動(dòng)地確認(rèn)當(dāng)前范圍的中點(diǎn),在這個(gè)中點(diǎn)上進(jìn)行測試,然后要求你確定那次提交是一個(gè) 好提交good commit 還是一個(gè) 壞提交bad commit,然后它會(huì)重復(fù)這一“二分查找”的過程,直到你找到首次引入錯(cuò)誤的那一次提交。

Image of Zeno's paradox of Achilles.

Image of Zeno's paradox of Achilles.

這個(gè)“數(shù)學(xué)”工具是利用“二分查找”來找到錯(cuò)誤之處的。??git bisect?? 命令通過查看中點(diǎn),然后由你來決定它是提交列表的新起點(diǎn)(即 “壞提交” )還是新終點(diǎn)(即 “好提交”),進(jìn)而來縮小查找范圍,如此在幾次查找中你可以就能定位到有錯(cuò)誤的提交。即使你有 10,000 個(gè)提交要檢查,最多只需要 13 次查找,就能很快地定位到首次引入錯(cuò)誤的提交。

  1. 提交 1 壞 <> 提交 10,000 好 => 提交 5,000 是壞的
  2. 提交 5,000 壞 <> 提交 10,000 好 => 提交 7,500 是好的
  3. 提交 5,000 壞 <> 提交 7,500 好 => 提交 6,250 是好的
  4. 提交 5,000 壞 <> 提交 6,250 好 => 提交 5,625 是壞的
  5. 提交 5,625 壞 <> 提交 6,250 好 => 提交 5,938 是壞的
  6. 提交 5,938 壞 <> 提交 6,250 好 => 提交 6,094 是好的
  7. 提交 5,938 壞 <> 提交 6,094 好 => 提交 6,016 是壞的
  8. 提交 6,016 壞 <> 提交 6,094 好 => 提交 6,055 是好的
  9. 提交 6,016 壞 <> 提交 6,055 好 => 提交 6,036 是壞的
  10. 提交 6,036 壞 <> 提交 6,055 好 => 提交 6,046 是壞的
  11. 提交 6,046 壞 <> 提交 6,055 好 => 提交 6,050 是壞的
  12. 提交 6,050 壞 <> 提交 6,055 好 => 提交 6,053 是好的
  13. 提交 6,053 壞 <> 提交 6,055 好 => 提交 6,054 是好的

對于上面這個(gè)例子,我們能知道 10,000 個(gè)提交中的第一個(gè)錯(cuò)誤提交是第 6053 次提交。對于 ??git bisect?? 命令,最多需要幾分鐘就能完成檢索。但是如果要一個(gè)一個(gè)查找每個(gè)提交是否錯(cuò)誤,我甚至無法想象需要多長時(shí)間。

使用 Git bisect 命令

??git bisect?? 命令使用起來非常簡單:

(LCTT 譯注:使用 ??git bisect start?? 命令來進(jìn)入 bisect 模式,并且該命令指定了一個(gè)檢查范圍。它會(huì)告訴我們一共有多少次提交,大概需要幾步就可以定位到具體的提交。)

$ git bisect start$ git bisect bad        # Git assumes you mean HEAD by default$ git bisect good <ref> # specify a tag or commit ID for <ref>

Git 檢查中間的提交,并等待你聲明這次提交是一個(gè)好提交還是一個(gè)壞提交:

(LCTT 譯注:如果某一提交是可以通過的,則使用 ??git bisect good?? 命令標(biāo)記;同樣地,如果某一提交不能通過,則使用 ??git bisect bad?? 命令標(biāo)記。)

$ git bisect good

$ git bisect bad

然后,??git bisect?? 工具重復(fù)檢查好提交和壞提交中間的那次提交,直到你告訴它:

$ git bisect reset

一些高級用戶甚至可以自己編寫腳本,來確定提交的好壞狀態(tài)、并在找到特定提交時(shí)采取某一補(bǔ)救措施。你可能不會(huì)每天都使用 ??git bisect?? 命令,但當(dāng)你需要它來定位首次引入錯(cuò)誤的提交時(shí),它會(huì)是一個(gè)很有用的救星。

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2021-01-04 13:25:10

Git開源工具

2020-10-27 07:31:35

GitGit RevertGit Reset

2022-11-06 20:40:24

Gitgit log 命令

2014-07-25 11:45:29

Linuxlocate命令

2014-09-23 09:40:09

2009-04-03 14:50:01

微軟Windows 7錯(cuò)誤

2024-01-08 21:01:36

NFSGit文件目錄

2021-01-22 05:55:12

GitAngularJStype

2020-11-05 11:50:48

Git命令Linux

2018-07-10 10:45:00

規(guī)范Commit項(xiàng)目

2018-07-10 11:05:18

開發(fā)者技能命令

2012-04-24 23:38:05

Adobe

2017-03-08 19:00:59

Linuxsudo命令

2021-04-17 17:59:21

Git命令開源

2022-04-28 09:02:55

Gitcommitlint配置

2022-10-27 09:34:06

git撤銷

2010-04-28 10:04:15

unixware

2025-03-26 08:00:00

代碼Git鉤子

2024-07-26 09:22:36

2015-12-10 09:43:23

Git命令清單
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號