Docs header transparent bg

如何使用 git bisect

git bisect 是一個有用的除錯工具。就背景來說,git bisect 是 git 指令,可用於追蹤錯誤被引入程式碼庫中的特定提交。

如果你可以找到程式碼正常運作的提交,以及包含錯誤的提交,你就不必手動追蹤有錯誤的提交。git bisect 指令會透過二元搜尋,協助你找到有錯誤的提交。例如,Git 文件中有 一個方便的 git bisect 指南,顯示了兩種使用方式。

如何在使用 Bundler 的專案中使用 git bisect

git bisect 要在使用 Bundler 的專案中運作,需要一些可能不顯而易見的事情。

  1. Gemfile.lock 需要在 git 儲存庫中,這樣每次提交都會載入相同的相依項。
  2. 在二分搜尋期間的每一步都需要先執行 bundle install,這樣才能安裝正確的相依項,並讓它們可以載入。
  3. 在確定提交是好是壞之後,每一步都需要 git reset。如果 bundle install 或執行測試會導致檔案系統變更,這會阻止 git checkout 測試下一個提交是否沒有重設。

以下是一個執行 rake 工作 spec 的最小範例腳本

#!/usr/bin/env bash
bundle install
bin/rake spec
status=$?
git reset --hard HEAD
exit $status

另請參閱 rubygems/bundler#3726 的討論。

如果您發現錯誤或發現有遺漏之處,請在 GitHub 上編輯此文件