git bisectで最初のbadコミットの情報を取得する
最近ようやく git bisectの使い方を学んだ。
ただ、git bisectを使っていて少し躓いたのが、コミットをckeckoutする順番によってはbadコミットの1つ手前でbisectが完了することだ。
具体的には、
A(good) → B(good) → X(bad) → Y(bad) → Z(bad)
という履歴の時に、2分探索が
X → B
という順番で行われる*1ため、bisect の完了時に B がチェックアウトされた状態になる。
この時、一応、badコミットを示す「
そうなった後でgit logとかでなんとかbadコミットの情報を取得しようとしても、簡単にbadコミットの情報が得られない*2。
今までは出力結果が流されないように別コンソールでgit bisectをやっていたりしたけど、よくよく調べると最初のbadコミットは「bisect/bad」で参照できるようだ。
bisect/badはgit bisect resetするまでは普通の軽量タグと同じように扱える気がする。
badコミットの内容を表示する | git show bisect/bad |
badコミットにタグを付ける | git tag タグ名 bisect/bad |
badコミットを別ブランチに切りだしておく | git branch ブランチ名 bisect/bad |
badコミットのsha1ハッシュを取得する | git rev-parse bisect/bad |
等々
注意点としては、あくまでbisect/badは「その時点で分かっている最初のbadコミット」を表すという点だ。
なので、上記の例だと、git bisect開始直後はbisect/badはZを指している。
この点と、git bisect resetすると参照できなくなる点に気をつければ、簡単にbadコミットの情報を利用できるようになると思う。