假设我有一个带有非常快速的测试脚本的小项目,我只想将所有内容从最初提交到当前提交一分为二。我怎么能这样做?
为了澄清,我不想浪费时间来识别一个好的提交和一个糟糕的提交,所以我正在寻找一种快速的方法来将最新的提交标记为坏,并且初始提交是好的
答案 0 :(得分: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
。
如果您使用的是早于1.7.4.2的git版本,则您不会拥有--max-parents
选项,因此需要使用类似git rev-list HEAD | tail -n 1
的内容。< / p>