在二等分之前将工作树更改为特定提交的最佳方法是什么?

时间:2010-01-19 19:49:11

标签: git git-bisect

开始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>?别的什么?请证明你的答案。

2 个答案:

答案 0 :(得分:8)

我通常不知道好转的位置,所以我必须找到它。猜猜回来可能有多好。比方说,32转。从分支的尖端开始,并使用干净的工作目录:

$ git checkout HEAD~32

运行测试。如果它是一个好转,开始平分。如果不是,请再回过头来看看:

$ git checkout HEAD~32

冲洗,起泡,重复。

为什么“git checkout?”因为“git reset”会改变分支指向哪个提交作为其“提示”,但git checkout不会。

答案 1 :(得分:1)

如果您不确定任何功能有效的版本(引入该功能的提交?),您似乎会失去很多(全部?)的bisect的好处。如果您确实知道至少有一个功能有效的提交,即使它不一定是功能有效的最新提交,只需标记该功能即可。否则,你基本上是在做一个二等分。