我正在学习git bisect
让我们猜测以下线性 git 历史:
* A commit-1 # HEAD
* B commit-2
* C commit-3
* D commit-4 # First bad commit
* E commit-5
* F commit-6
* G commit-7
* H commit-8 # Is good
然后,我开始二分:
git bisect start
git bisect bad HEAD # A commit-1
git bisect good H # H commit-8
我有一个运行一些测试的脚本,如果我手动运行测试并将每个提交标记为bad和good,它遵循以下步骤:
E commit-5 # OK
C commit-3 # FAIL
D commit-4 # FAIL
因此,它完成D commit-4
了第一个错误提交,这是正确的。
但是,如果我使用git bisect run ../outside/test.sh
它会执行以下操作:
E commit-5 # OK
C commit-3 # FAIL
B commit-2 # FAIL
A commit-1 # FAIL
说这A commit-1
是第一个错误的提交,这是错误的。
所以,如果我理解这里的二进制搜索,一次C commit-3
是坏的,第一个错误的提交应该是它自己或者在下面。
我在这里缺少什么?为什么他们会有不同的行为?看起来git bisect run
正在运行不同的算法。
我的 git 版本是:2.19.0
谢谢