Git是一个强大的工具。 一旦掌握了commit
和merge
,就有无限的可能。 一个非常有用的是git-bisect
。 它可以帮助您找到导致行为发生某些变化的提交。
当您找到一个回归时,曾经破坏过的东西曾经起作用 ,请使用git-bisect
查找破坏它的提交。 将当前提交标记为bad
,将仍可使用该功能的旧提交标记为good
。 然后, Git-bisect
将通过二进制搜索将这两个提交之间的所有更改一分为二。 在每一步中,都要求您将提交标记为good
或bad
直到bisect
找到第一个错误提交 。
如何使用git-bisect
git bisect start
npm test # Double check that this commit is broken.
git bisect bad
git log --oneline # Find the hash of a good commit.
git checkout 7425633 # Checkout that good commit.
npm test # Double check that everything was green.
git bisect good
Bisect
使用二进制搜索,因此范围呈指数减小。 每一步都将范围缩小一半。 如果你bisect
多达两次提交,平均需要一个额外的步骤-而不是两倍。 因此,平分大范围的提交是相当快的。
我们在Node.js项目中 git-bisect
使用git-bisect
。 Node.js项目具有良好的持续集成性,但是某些错误仅在发布后才发现。 使用git-bisect
,很容易找到错误的提交。
尝试一下!
如果您想尝试git-bisect
,这里是一个演示存储库 。 在某些时候,通过运行npx mocha test1.js
可以看到一个错误。 你能找到错误的提交吗?
自动化git-bisect
您可以使用脚本运行git-bisect
,而不是手动测试每个步骤。 它将在每个步骤中使用脚本并自动标记提交,直到找到第一个错误的提交为止。