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 は、登録不要・無料で遊べます(それより先はブロンズ以上のプランで遊べます)。