6

この質問への回答で説明されているように、およびをgit bisect介してセッションを修正できることを承知しています。git bisect loggit bisect replay

ただし、バイセクト セッションを台無しにした場合、それはおそらく 1 つの間違った決定であり、直接 (つまり、すべてを中止することなく) 修正できるようにしたいと考えています。

たとえばrm .git/refs/bisect/good-<hash>、間違っgit bisect goodた .

これは正しいですか、それとも何か見逃していますか?
また、誤った に対して類似の操作を行うことはできgit bisect badますか?

4

1 に答える 1

5

はい、それらの参照はgit bisect、現在の状態を知るために使用するものです。git bisect goodそのため、を使用して参照を調整することで、エラーを元に戻すことができgit update-refます。

ただし、これには 2 つの問題があります。

  1. 良いコミットと悪いコミットは、次のように異なる方法でマークされgit bisectます。

    • 良好とマークされたすべてのコミットはrefs/bisect/good-<commit id>参照を取得します。そのため、これは対応する

      git update-ref -d refs/bisect/good-<commit id>
      
    • ただし、git bisect単一の不正なコミットのみを追跡するため、refrefs/bisect/badを既知の不正なコミットにリセットする必要があります。

      git update-ref refs/bisect/bad <really bad commit id>
      

      refをリセットするコミットを見つけるために、bisect ログ (下.git/BISECT_LOGまたは経由) を確認する必要があります。git bisect logrefs/bisect/bad

  2. 参照に加えて、 はgit bisectにあるログですべてのアクションを追跡します.git/BISECT_LOG。このログは通常の操作には関係ありませんが、自分で参照をいじると無意味なログが作成されます。もちろん、それを無視するか、それに応じてログを修正することもできますが、それはリンクしたソリューションよりも優れているとは言えません。

はい、これは可能ですが、代償が伴います。全体として、ログを保存して修正し、再生する方が良い方法のようです。

于 2015-06-20T16:50:04.870 に答える