20

假设我有一个带有非常快的测试脚本的小项目,我只想一分为二,从初始提交到当前提交。我怎样才能做到这一点?

澄清一下,我不想浪费时间来识别一个好的提交和一个坏的提交,所以我正在寻找一种快速的方法来将最新的提交标记为坏的,并将初始提交标记为好的。

4

1 回答 1

12
git bisect start
git bisect good
git bisect bad `git rev-list --max-parents=0 HEAD`
git bisect run ./test.sh

或者将这些命令合并到别名中,例如:

bisect-all = !git bisect start && git bisect bad &&\
        git bisect good `git rev-list --max-parents=0 --first-parent HEAD`

然后只需使用git bisect-all, git bisect run ./test.sh

创建一个别名来处理整个过程稍微复杂一些:

quick-bisect = !sh -c 'git bisect start && git bisect bad &&\
        git bisect good `git rev-list --max-parents=0 --first-parent HEAD` &&\
        git bisect run "$@" && git bisect reset' -

但是有了它,你可以简单地运行git quick-bisect ./test.sh.


如果您使用的 git 版本早于 1.7.4.2,您将无法--max-parents选择,因此需要使用类似的东西git rev-list HEAD | tail -n 1

于 2014-07-09T15:32:48.143 回答