我知道可以git bisect
通过git bisect log
和对此问题git bisect replay
的答案中所述修复会话。
但是,当我搞砸了一个bisect会话时,这可能只是一个错误的决定,我希望能够直接对其进行修复(即不中断整个过程)。
例如,我可以想象到应该有可能做rm .git/refs/bisect/good-<hash>
一个错误的撤消操作git bisect good
。
这是正确的,还是我错过了什么?
并且,是否可以对错误进行类似的处理git bisect bad
?
是的,这些引用是git bisect
用来了解其当前状态的。这样,可以git bisect good
通过使用调整参考来消除错误git update-ref
。
但是,这有两个问题:
好的和不好的提交用不同的方式标记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
引用重置为哪个提交。
除了ref之外,还git bisect
位于的日志中跟踪其所有操作.git/BISECT_LOG
。尽管此日志与正常操作无关,但您自己动手使用裁判会导致无意义的日志。当然,您可以忽略它,也可以相应地修复日志,但这不会比您链接的解决方案更好。
因此,是的,可以做到,但是要付出一定的代价。总而言之,保存日志,修复日志并重播日志似乎是更好的选择。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句