我是 git 新手,刚刚发现“git bisect”。当您可以使用新编写的单元测试(事先没有)检查错误时,通常如何使用它?
假设我们有一个包含单元测试的存储库,但是 - 通常 - 它们并不完整。在某些版本中,我们发现某个功能无法正常工作,但我们知道它在之前的某个版本中是有效的。不幸的是,该功能未通过单元测试进行检查。我现在想做的是:
- 编写测试用例(当然首先失败)
- 使用此测试用例使用 git bisect 查找引入错误的提交
- 更正错误并提交修复(和测试用例)
这个用例有一个问题。由于 git bisect 检查旧版本,刚插入的测试用例不会在那里,所以我不能用它来检查错误。我可以尝试不提交测试,但将其保留为本地更改。但是假设测试文件在中间的某个版本中发生了更改,我很可能会遇到 merge 冲突。
那怎么办? git bisect一般怎么用?
最佳答案
我通常使用 bisect 来识别何时引入了错误,这样我就可以查看单个提交以找出错误的原因。当我知道某些东西曾经有效而现在无效时,这很有用。我首先选择或找到一个有效的旧提交,用 git bisect good
标记它,用 git bisect bad
标记它的头部,然后完成对分直到 git 告诉我提交引入了问题。有时我可以在开始这个过程之前编写单元测试,有时我不能在看到引入错误的代码之前编写它。
所以,假设我有单元测试,或者我在执行 git bisect 过程时需要在每个点使用的一些其他代码或脚本。 stash 对于我随身携带它很有用。所以,
git stash save blah
git bisect bad (and now I'm on a new commit)
git stash pop
mvn clean test
git stash save blah
git bisect good
git stash pop
mvn clean test
等等。
关于git - 如何使用 git bisect : Using unit tests for determining the errorneous commit?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12760450/