git bisect の使い方

バグが入ったコミットを探す

書き方

git bisect start
git bisect bad [コミット]
git bisect good コミット
git bisect reset

良いコミットと悪いコミットの間を半分ずつ調べて、最初に悪くなったコミットを見つけます。

よく使うオプション

オプション意味
start探し始める
bad [コミット]そのコミットは悪い(省くと今のコミット)
good コミットそのコミットは良い
skip今のコミットは確かめられないので飛ばす
run コマンドコマンドの成功・失敗で自動で判定する
reset終えて元のブランチに戻る

例

$ git bisect start

バグが入ったコミットを探し始めます。

$ git bisect bad

今のコミットではバグが起きる、と伝えます。

$ git bisect good v2.3Bisecting: 6 revisions left to test after this (roughly 3 steps)
[4d5e6f7] 設定を足す

v2.3 のときは正しく動いていた、と伝えます。Git が真ん中のコミットを取り出します。

$ git bisect run npm test

テストが失敗するかどうかで、自動で良い・悪いを判定して探します。

$ git bisect reset

探し終わったら、始める前のブランチに戻ります。

よくある間違い・注意

  • 探している間はコミットを取り出した状態(detached HEAD)です。終わったら必ず git bisect reset で戻ります。
  • good と bad を一度でも逆に答えると、違うコミットにたどり着きます。

実際に打って練習する

Git コースの Lv40「犯人を探す git bisect」で覚えます(第6章 ギルドの実践)。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。

Lv1〜10 は、登録不要・無料で遊べます(それより先はブロンズ以上のプランで遊べます)。

Git コマンド一覧(使い方と例)へ戻る