我知道可以修复 git bisect
session 通过 git bisect log
和 git bisect replay
如 this question 的答案中所述.
但是,当我搞砸了一个对分 session 时,这可能只是一个错误的决定,我希望能够直接修复它(即不中止整个事情)。
例如,我可以想象只做 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
只跟踪一个错误的提交,所以你需要重置 refrefs/bisect/bad
一个已知的错误提交git update-ref refs/bisect/bad <really bad commit id>
您可能需要查看对分日志(在
.git/BISECT_LOG
下或通过git bisect log
)以找出将refs/bisect/bad
重置为哪个提交引用
除了引用文献,
git bisect
在位于.git/BISECT_LOG
的日志中跟踪其所有操作.虽然此日志与正常操作无关,但您自己摆弄 refs 将导致无意义的日志。当然,您可以忽略它或相应地修复日志,但这并不比您链接的解决方案更好。
所以,是的,这是可以做到的,但需要付出代价。总而言之,保存日志、修复它并重播它似乎是更好的选择。
关于git - 是否可以更有针对性地从 git bisect 错误中恢复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30506624/