我知道topic-branch-7的提示有一个bug,我知道master的提示没有bug。我想找出在topic-branch-7中引入错误的位置。所以我运行了以下内容:
git checkout topic-branch-7
# some testing to verify the bug
git bisect start bad # start a git bisect and mark this commit as bad
git-merge-base master topic-branch-7
9ac8c59bb10c13d86bcdeff90cb47e25d477caad
git checkout 9ac8c59bb10c13d86bcdeff90cb47e25d477caad
# some testing to verify the bug is not present
git bisect good
什么让我失望的是,当我运行git bisect好......没有任何反应!是不是应该将提交标记为好,在此提交和错误提交之间找到一个中点,并对该提交执行检查?为什么没有发生?
答案 0 :(得分:2)
我认为你有git bisect的语法错误。它应该是
git-merge-base master topic-branch-7
9ac8c59bb10c13d86bcdeff90cb47e25d477caad
git bisect start topic-branch-7 9ac8c59bb10c13d86bcdeff90cb47e25d477caad
#you are now at a commit somewhere in between topic-branch-7 and 9ac8c59bb10c13d86bcdeff90cb47e25d477caad
#do testing to find out if bug is there
git bisect good/bad
#repeat until git tells you where the bug is introduced
git bisect reset HEAD
答案 1 :(得分:0)
我知道git bisect工作得很好,但我喜欢做的是使用分支机构手动完成。我选择一个好的提交并创建一个分支,称之为“好”。然后我开始在中间找到一个提交并测试它。如果它很好,那么我在这个和主服务器之间的提交上创建一个分支,否则,我在选择的中间分支下面的提交上创建一个分支。这是迭代完成的,基本上是二进制排序。这意味着我检查较少的提交,我有更好的控制比bisect。通常我会使用gitk结账到每个分支机构。另一个好处是,如果你找到了什么,你可以在一个单独的分支上工作而不影响其余部分。例如
Master Commit
.
.
.
Test Commit <---- This one is good, so keep selecting commits above until you fail
.
.
.
Middle Commit <--- Create branch and checkout. This one is good, so go above
.
.
.
Good Commit