投稿

[GitHub 100日チャレンジ] Day 70 - Git Bisectで原因コミットを探す

git bisectで正常だったコミットと壊れているコミットの間を二分探索し、バグの原因コミットを見つける方法を学びます。

[GitHub 100日チャレンジ] Day 70 - Git Bisectで原因コミットを探す

git bisectとは

git bisectは、バグが入り込んだ最初のコミットを二分探索で探すGitのデバッグ機能です。

「今は壊れているが、以前のバージョンでは正常だった」という状況で役立ちます。

基本の流れ

1
2
3
git bisect start
git bisect bad
git bisect good v1.0.0

Gitが中間のコミットへ移動するので、テストして結果を伝えます。

1
2
git bisect good
git bisect bad

原因コミットが見つかったら必ず終了します。

1
git bisect reset

自動テストと組み合わせる

1
2
git bisect start HEAD v1.0.0
git bisect run npm test

テストコマンドの終了コードが 0 ならgood、それ以外ならbadとして扱われます。

判断基準を明確にする

bisectではgood/badの基準が重要です。

  • good: ログイン後にダッシュボードが表示される
  • bad: ログイン後に空白画面になる

基準が曖昧だと、間違ったコミットを原因として特定してしまいます。

今日のゴール

bisectは「いつ壊れたか」を短時間で探すための道具です。正常だった地点と壊れている地点を決め、二分探索で原因コミットを見つけましょう。

この投稿は投稿者によって CC BY 4.0 の下でライセンスされています。