Menu
Coddy logo textTech

Git Bisect

最終更新

git bisect は二分探索でバグを混入させたコミットを見つけます。既知の正常なコミットと既知の不良コミットを指定すると、その中間のコミットをチェックアウトし、あなたが good か bad をマークすると、毎回範囲を半分に絞り込みます - こうして数千のコミットの中でも数ステップで原因を特定します。

これらをターミナルプレイグラウンドで試してみましょう - ブラウザ上の本物のシェルで、インストール不要です。

git bisect は正常なコミットと壊れたコミットの間で履歴を二分探索し、疑わしい範囲を毎回半分に絞り込みます。

構文

CommandWhat it does
git bisect startbisect セッションを開始する
git bisect bad現在のコミットを不良としてマークする
git bisect good <hash>既知の正常なコミットをマークする
git bisect good / git bisect badテストした各コミットをマークする
git bisect run ./test.sh自動化: 各ステップをマークするためにテストを実行する
git bisect resetbisect を終了し、自分のブランチに戻る

実践例

どのコミットがビルドを壊したかを見つけます。

StepCommandResult
1git bisect start探索を開始する
2git bisect bad現在のコミットは壊れている
3git bisect good v1.0この古いタグは動作していた
4テストして good/badGit がコミットを示すまで繰り返す

git bisect のよくある質問

git bisect は何をしますか?
コミット履歴を二分探索して、バグを混入させた正確なコミットを見つけます。あるコミットを good、別のコミットを bad とマークすると、Git はテスト用に繰り返し中間点をチェックアウトし、最初の不良コミットを特定するまで毎回探索範囲を半分に絞り込みます。
git bisect はどう使いますか?
git bisect start を実行し、現在の壊れた状態を git bisect bad で、既知の動作するコミットを git bisect good <hash> でマークします。Git が中間点をチェックアウトするので、それをテストして git bisect good または git bisect bad を実行します。Git が最初の不良コミットを報告するまで繰り返し、その後 git bisect reset を実行します。
git bisect は自動化できますか?
はい。git bisect run <script> は各ステップでスクリプトを実行します - スクリプトは正常なコミットでは 0、不良なコミットでは 0 以外で終了する必要があります(テストランナーがよく適します)。すると Git は各コミットを手作業でマークすることなく自動で bisect を行い、最後に問題のコミットを出力します。
bisect はどう終わらせますか?
git bisect reset を実行してセッションを終了し、開始前にいたブランチとコミットに戻ります。不良コミットを見つけたかどうかに関係なく実行してください - 一時的な bisect の状態を片付けます。
これをオンラインで練習できますか?
はい。ターミナルプレイグラウンドを開けば、ブラウザ上の本物のシェルで git bisect を実行できます - インストール不要です。Coddy の無料のインタラクティブな Git コースでは、履歴を段階的に調べる方法も扱っています。
Coddy programming languages illustration

Coddy で Git を学ぼう

始める