从最初的提交中删除所有内容

Zaz*_*Zaz 19 git git-bisect

假设我有一个非常快速的测试脚本的小项目,我只想将所有内容从最初的提交到当前的提交一分为二.我怎样才能做到这一点?

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

Zaz*_*Zaz 12

git bisect start
git bisect good
git bisect bad `git rev-list --max-parents=0 HEAD`
git bisect run ./test.sh
Run Code Online (Sandbox Code Playgroud)

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

bisect-all = !git bisect start && git bisect bad &&\
        git bisect good `git rev-list --max-parents=0 --first-parent HEAD`
Run Code Online (Sandbox Code Playgroud)

然后使用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' -
Run Code Online (Sandbox Code Playgroud)

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


如果您使用的是早于1.7.4.2的git版本,则您将无法使用该--max-parents选项,因此需要使用类似的功能git rev-list HEAD | tail -n 1.

  • 也许可以将`--first-parent`添加到rev-​​list中,以避免在项目合并时出现多根问题,并引用params"$ @",以避免不必要的单词拆分? (3认同)