我正在使用cherry-pick
git rev-list --reverse something-begin..something-end | git cherry-pick --stdin
然后以错误消息
结束...
You are currently cherry-picking commit xxxyyy.
nothing to commit, working tree clean
The previous cherry-pick is now empty, possibly due to conflict resolution.
If you wish to commit it anyway, use:
git commit --allow-empty
If you wish to skip this commit, use:
git reset
Then "git cherry-pick --continue" will resume cherry-picking the remaining commits.
我不想选择任何这些空提交。
为每个停靠点输入git reset; git cherry-pick --continue
并提示是非常烦人的。
为什么它没有提供--skip-empty
选项?然后我得到了这个帖子:
非常糟糕,我检查了我的git版本2.9.3
,甚至发现它cherry-pick
不支持--skip-empty
或--empty-commpit=skip
或任何其他。{ / p>
我检查过git rev-list
有一个选项--remove-empty
,但它没有任何帮助。
答案 0 :(得分:3)
最后我找到了解决方案。
git rev-list --reverse something-begin..something-end . | git cherry-pick --stdin
为rev-list
命令添加一个点(即路径部分)将跳过所有空提交(--remove-empty
为什么?)
答案 1 :(得分:1)
您可以通过这种方式使用rebase(已签出目标分支):
git reset --hard something-end && git rebase ORIG_HEAD
它会自动跳过多余的提交。
信用归我的同事Michael Adam提出,他就是这个想法。