高級GIT教程-如何使用GIT調試代碼?

目錄

介紹

找出是誰提出了犯罪界限

查找第一個被破壞的提交

自動化搜索過程

摘要


GIT是一個版本控制系統,無論使用哪種編程語言,它都可以爲您提供強大的調試代碼支持。在這篇文章中,我們將看到一些內置的git命令,如果項目中出現問題,這些命令可以使您的生活更輕鬆。

介紹

不幸的是,每個軟件開發人員都知道事情經常出錯。某些東西破壞了構建,另一些東西破壞了測試。有人進行了不符合編碼準則等的更改。

在這種情況下,很難找出問題所在,有時需要很長時間和數天的調試時間。

幸運的是,Git在這種情況下也可以提供幫助。讓我們看一些內置的Git命令,如果項目中出現問題,這些命令可以使您的生活更輕鬆。

找出是誰提出了犯罪界限

您正在閱讀代碼並找到一行。到底是誰幹的?” ——這是你的第一個問題。也許您不瞭解該行的目的,或者未遵循編碼準則,或者這是錯誤的根本原因。您可以做的第一件事是檢查該文件的git日誌,並找出哪個提交包含相關更改。這可能非常耗時,特別是如果文件的歷史很長,並且相關更改在很久以前就發生了。

還有另一個更有效的解決方案:git blame

只需輸入git blame filename。它將爲您顯示每一行,哪個提交是修改它的最後一個。

這樣,很容易找出是誰進行了更改以及其目的是什麼。

查找第一個被破壞的提交

您在代碼中發現了一個錯誤。您知道一週前它還不存在,並且您還不知道確切的根本原因。如果您知道哪個提交引入了該錯誤,將會很有幫助,可以節省大量的調試時間。

在這種情況下,Git bisect是最好的解決方案。Git bisect是提交歷史記錄中的二進制搜索方法。它甚至可以處理合並提交。讓我們看看它是如何工作的:

  1. 鍵入git bisect start——啓動 bisect進程
  2. 鍵入git bisect bad——將當前提交標記爲“bad”
  3. 鍵入git bisect good hash_of_the_last_working_commit——在您確定不存在該錯誤的位置,將最後一次提交標記爲“good”
  4. 現在git bisect將檢出介於當前和最後一次良好提交之間的提交。編譯並測試。如果存在該錯誤,請鍵入git bisect bad,否則鍵入git bisect good
  5. 重複步驟4,直到找不到提交爲止

感謝二進制搜索的強大功能,它是查找破壞的提交的一種非常快速的方法。

如果錯誤不一致,可能會導致此方法出現問題,它會隨機出現在某些提交中。

自動化搜索過程

手動測試提交可能很耗時。

幸運的是,它可以自動化。Git bisect還支持運行自動化測試。

  1. 實現一個測試,如果不存在該錯誤,則返回0,如果存在該錯誤,則返回非零(大多數測試框架已經以這種方式工作,因此在大多數情況下實現一些簡單的單元測試就足夠了)
  2. 鍵入git bisect start
  3. 鍵入git bisect bad
  4. 鍵入git bisect good hash_of_last_working_commit
  5. 鍵入git bisect run your_test

此方法將在存在您的錯誤的位置找到第一個提交。

摘要

當您必須找出導致錯誤的根本原因時,git blamegit guilty都非常有用。如果您足夠頻繁地進行提交,它可能比使用傳統的調試方法快得多。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章