git - 是否可以更有针对性地从 git bisect 错误中恢复?

标签 git git-bisect

我知道可以修复 git bisect session 通过 git bisect loggit bisect replaythis question 的答案中所述.

但是,当我搞砸了一个对分 session 时,这可能只是一个错误的决定,我希望能够直接修复它(即不中止整个事情)。

例如,我可以想象只做 rm .git/refs/bisect/good-<hash> 应该是可能的撤消错误 git bisect good .

这是正确的,还是我遗漏了什么?
并且,可以对错误的 git bisect bad 进行类似的操作吗? ?

最佳答案

是的,那些引用就是 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只跟踪一个错误的提交,所以你需要重置 ref refs/bisect/bad一个已知的错误提交

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

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

  2. 除了引用文献,git bisect在位于 .git/BISECT_LOG 的日志中跟踪其所有操作.虽然此日志与正常操作无关,但您自己摆弄 refs 将导致无意义的日志。当然,您可以忽略它或相应地修复日志,但这并不比您链接的解决方案更好。

所以,是的,这是可以做到的,但需要付出代价。总而言之,保存日志、修复它并重播它似乎是更好的选择。

关于git - 是否可以更有针对性地从 git bisect 错误中恢复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30506624/

相关文章:

git-bisect 但对于 N 个 repo

git - Git .ssh 的默认路径是什么?

ios - 我无法让 cocoapods 下载正确的提交

git - 修剪空格

Git:相当于 `--full-history` 和 `git bisect` 的 `git blame`

git - 是否有脚本为 Perforce (p4) 提供与 git-bisect 等效的脚本?

github 组织、存储库和用户访问

git - 如何取消删除github上的分支?

带有*无趣*路径列表的 git bisect

git - 如何获取 git bisect 的当前 "status"?