Git

問題のあるコミットを特定する ( git bisect )

More than 3 years have passed since last update.


内容


  • 基本的な使い方は他の記事を参照してください。



  • しかし、ビルドが失敗するなど、テストがそもそも失敗した時の対応がどこにもまとめられていないので

    サマリ的な要素も含めてまとめてみます。


    • ぶっちゃけgit bisect skipの紹介と、

      git bisect run時にskipをさせるために125を返すということの紹介だけ。




基本的な使い方


手動



  1. 開始



    • 基本

      $ git bisect start
      
      $ git bisect bad <bad commit>
      $ git bisect good <good commit>


    • ワンライナ

      git bisect start <bad commit> <good commit>




  2. 自動で中間のコミットがチェックアウトされた状態になる



  3. 成否を入力


    • 成功 git bisect good

    • 失敗 git bisect bad

    • テスト不能 git bisect skip




  4. 2.に戻る


    • 特定したらgit showした時のような見た目になる




入力を間違えた場合



  1. git bisect log > <temporary file name>を適当なファイルに保存

  2. 入力を間違えたところ以降を削除する


    • 恐らく最後の2行(コメント部分と実行したコマンド)

    • 間違えてない部分はそのままでもいいかも?(要検証)




  3. git bisect resetで一旦終了


  4. git bisect replay <temporary file name>でログの内容を再実行


自動



  1. テストスクリプトを書く



    • 終了コードによってテストの結果が判定される

      終了コード
      意味

      0
      成功

      1〜128(125を除く)
      失敗

      125
      テスト不能




  2. テスト開始処理(手動の時と同じなので割愛)


  3. テスト実行

    git bisect run <script>


  4. 特定したらgit showした時のような見た目になる



参考記事