假设我有一个带有非常快的测试脚本的小项目,我只想一分为二,从初始提交到当前提交。我怎样才能做到这一点?
澄清一下,我不想浪费时间来识别一个好的提交和一个坏的提交,所以我正在寻找一种快速的方法来将最新的提交标记为坏的,并将初始提交标记为好的。
假设我有一个带有非常快的测试脚本的小项目,我只想一分为二,从初始提交到当前提交。我怎样才能做到这一点?
澄清一下,我不想浪费时间来识别一个好的提交和一个坏的提交,所以我正在寻找一种快速的方法来将最新的提交标记为坏的,并将初始提交标记为好的。
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
。