从git bisect错误中恢复更有针对性吗?

cmaster-恢复莫妮卡

我知道可以git bisect通过git bisect log对此问题git bisect replay的答案中所述修复会话

但是,当我搞砸了一个bisect会话时,这可能只是一个错误的决定,我希望能够直接对其进行修复(即不中断整个过程)。

例如,我可以想象到应该有可能做rm .git/refs/bisect/good-<hash>一个错误的撤消操作git bisect good

这是正确的,还是我错过了什么?
并且,是否可以对错误进行类似的处理git bisect bad

cmaster-恢复莫妮卡

是的,这些引用是git bisect用来了解其当前状态的。这样,可以git bisect good通过使用调整参考来消除错误git update-ref

但是,这有两个问题:

  1. 好的和不好的提交用不同的方式标记git bisect

    • 所有标记为“良好”的提交都会获得refs/bisect/good-<commit id>引用。因此,可以使用相应的

      git update-ref -d refs/bisect/good-<commit id>
      
    • 但是,git bisect仅跟踪单个错误提交,因此您需要使用以下命令将引用重置refs/bisect/bad为已知的错误提交:

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

      您可能需要查看bisect日志(在.git/BISECT_LOG或通过下git bisect log),以找出将refs/bisect/bad引用重置为哪个提交

  2. 除了ref之外,还git bisect位于的日志中跟踪其所有操作.git/BISECT_LOG尽管此日志与正常操作无关,但您自己动手使用裁判会导致无意义的日志。当然,您可以忽略它,也可以相应地修复日志,但这不会比您链接的解决方案更好。

因此,是的,可以做到,但是要付出一定的代价。总而言之,保存日志,修复日志并重播日志似乎是更好的选择。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章