← ClaudeAtlas

git-bisect-helperlisted

regression を二分探索で特定する手順(git bisect start/good/bad/run + 自動判定スクリプト)。再現スクリプトがあれば自動 bisect、なければ手動分類で犯人コミットを特定する。
ttamakijp/dev-templates · ★ 0 · Code & Development · score 69
Install: claude install-skill ttamakijp/dev-templates
# git-bisect-helper `git bisect` で regression を導入したコミットを二分探索する手順。 ## いつ使うか - 「以前は動いていたのに、最新版で動かない」regression - どのコミットが原因か明確でない - 手動で個別コミットを試すには候補が多すぎる(10 件超目安) ## 手順 ### 1. 良い版・悪い版を特定 ```bash # 現在の HEAD は壊れている git bisect start git bisect bad HEAD # v1.2.0 では動いていた git bisect good v1.2.0 ``` ### 2-A. 自動 bisect(再現スクリプトがある場合) `bisect-check.sh` を作成(exit 0 = good, exit 1 = bad, exit 125 = skip): ```bash #!/bin/bash # 例: 該当テストが通れば good ./gradlew :app:testDebugUnitTest --tests "com.example.FooTest" || exit 1 exit 0 ``` ```bash chmod +x bisect-check.sh git bisect run ./bisect-check.sh ``` ### 2-B. 手動 bisect ```bash # 各ステップで挙動確認後 git bisect good # or bad / skip ``` ### 3. 犯人コミット特定後 ```bash git bisect log > bisect-log.txt # 監査ログ保存 git bisect reset # 元のブランチに戻る git show <bad-commit> # 原因コミットを精査 ``` ## チェックリスト - [ ] `good` の commit で本当に再現しないことを最初に確認 - [ ] ビルドエラー時は `git bisect skip` で除外 - [ ] CI 上で実行する場合はキャッシュをクリアして検証 - [ ] 完了後 `git bisect reset` を忘れない - [ ] `git bisect log` を保存し、再現可能な記録を残す ## アンチパターン - 範囲が広すぎる(`good` を最古コミットにしない。直近の動作確認版を指定) - 自動チェックスクリプトの exit code を 0/1 以外で返してしまう - リファクタコミットで build 失敗 → skip せず bad にしてしまう