开始git bisect
会话时我通常的工作流程是:
git bisect start # start a bisect session
git bisect bad # I noticed that the current state is broken
现在,我经常知道过去的情况有用,但我不知道哪个版本好,所以我通常想把我的工作树恢复到较旧的状态,构建,测试,重复直到我找到一个我可以用git bisect good
标记的工作版本。
“将我的工作树恢复到较旧的状态”步骤的最佳方法是什么? git reset --hard <some_good_rev>
? git checkout <some_good_rev>
?别的什么?请证明你的答案。
答案 0 :(得分:8)
我通常不知道好转的位置,所以我必须找到它。猜猜回来可能有多好。比方说,32转。从分支的尖端开始,并使用干净的工作目录:
$ git checkout HEAD~32
运行测试。如果它是一个好转,开始平分。如果不是,请再回过头来看看:
$ git checkout HEAD~32
冲洗,起泡,重复。
为什么“git checkout?”因为“git reset”会改变分支指向哪个提交作为其“提示”,但git checkout不会。
答案 1 :(得分:1)
如果您不确定任何功能有效的版本(引入该功能的提交?),您似乎会失去很多(全部?)的bisect的好处。如果您确实知道至少有一个功能有效的提交,即使它不一定是功能有效的最新提交,只需标记该功能即可。否则,你基本上是在做一个二等分。