4

私はというタイトルの別のブランチにいて、redesign-test-fixes実行していますgit bisect start。その後、バグをテストして実行しますgit bisect bad。ターミナルは何も出力しません。次に実行しgit bisect goodます。同じこと、出力は端末に出力されません。そもそも bisect が実行されていないかのようです。通常、端末が残りのステップ数に関する情報を出力することを期待しています。何が問題で、どうすれば修正できますか? bisect を実行できない git 状態にあるのでしょうか。

git status は次のように応答します。

On branch redesign-test-fixes
nothing to commit, working directory clean

ただし、git bisect startgit status を実行すると、次のように応答します。

On branch redesign-test-fixes
You are currently bisecting, started from branch 'redesign-test-fixes'.
  (use "git bisect reset" to get back to the original branch)

nothing to commit, working directory clean
4

1 に答える 1

11

使い方がgit bisect間違っています。と入力した後git bisect start、使用するコミットの範囲を指定する必要がありgit bisectます。この範囲は、バグが発生しないことが確実な「良い」コミットと、バグが確実に存在すると思われる「悪い」コミットによって定義されます。したがって、使用法は次のように開始する必要があります。

git bisect start
git bisect good <SHA-1 of good commit>
git bisect bad  <SHA-1 of bad commit>

悪いコミットと良いコミットの間に 20 件のコミットがあると仮定すると、次のような出力が表示されるはずです。

Bisecting: 10 revisions left to test after this (roughly 4 steps)

10 個のリビジョンが残っている理由は、Git が選択した範囲の中間のコミットを既にチェックアウトしており、バグが導入されたコミットを見つけるために調べる必要があるコミットが最大で10 個あることを認識しているためです。

次に、この中間コミットでアプリケーションを検査し、バグが存在するかどうかを判断する必要があります。バグが見つからない場合は、次のように入力します。

git bisect good

バグが表示れた場合は、次のように入力します。

git bisect bad

これにより、次のような出力が再び表示されます。

Bisecting: 5 revisions left to test after this (roughly 2 steps)

明示的に通知することなく、Git は新しい範囲の中間コミットを再度チェックアウトしました。

と入力するこのプロセスを続けますgit bisect good/bad。二分するものがなくなると、Git は最初の悪いコミットを表示します。

a8h39dk32... is the first bad commit

参考文献:

の完全な使用法をカバーする優れたチュートリアルへのリンクを次に示しgit bisectます。また、Git の公式ドキュメントでさえ完全ではないことがわかりました。

于 2016-08-18T15:52:22.910 に答える