我正在学习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我有一个脚本来运行一些测试,如果我手动运行测试,并将每个提交标记为“坏”和“好”,它将遵循以下步骤:
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
谢谢
发布于 2020-04-13 23:07:02
刚刚发现了这个问题:
我的剧本是:
#!/bin/bash
npm test
echo "STATUS: $?"
exit $?因此,当npm start返回1时,echo语句将最新的退出代码更改为0,这是我在exit中使用的代码。
谢谢你指出script。
https://stackoverflow.com/questions/61197596
复制相似问题