Git Bisect:バグを導入したコミットを見つける

git bisectを使用してコミット履歴のバイナリサーチを実行し、バグがいつ導入されたかを正確に特定します。手動および自動bisectテクニックを学びます。

Advanced

詳細な説明

Git Bisectでバグを見つける

git bisectはバイナリサーチを使用して、バグを導入したコミットを効率的に見つけます。すべてのコミットをチェックする代わりに、各ステップで検索範囲を半分にするため、対数的に高速です。

手動Bisect

# ステップ1:bisectを開始
git bisect start

# ステップ2:現在のコミットをbadとしてマーク
git bisect bad

# ステップ3:既知のgoodコミットをマーク
git bisect good v2.0.0

# Gitが中間のコミットをチェックアウト。テストして:
git bisect good   # バグがない場合
git bisect bad    # バグがある場合

# 原因が特定されるまで繰り返す

# ステップ4:完了時にリセット
git bisect reset

自動Bisect

# テストスクリプトでプロセスを自動化
git bisect start HEAD v2.0.0
git bisect run npm test

効率

goodとbadの間にNコミットある場合、bisectは最大**log2(N)**ステップ必要:

  • 100コミット:約7ステップ
  • 1,000コミット:約10ステップ
  • 10,000コミット:約14ステップ

ユースケース

Git bisectはバグが発生したがどのコミットが導入したか分からない場合に非常に価値があります。これは多くのコントリビューターがいる大規模プロジェクトで、リグレッションが導入されてから数日または数週間後に発見される場合に一般的です。テストスクリプトによる自動bisectは特に強力で、数百のコミットにわたってテストスイートを壊した正確なコミットを数分で特定できます。

試してみる — Git Command Reference & Cheat Sheet

フルツールを開く