樱桃挑选套从其他分支提交跳过空提交

时间:2016-12-06 04:57:51

标签: git

我正在使用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选项?然后我得到了这个帖子:

  

http://markmail.org/message/yowzaetyu32ulvz7

非常糟糕,我检查了我的git版本2.9.3,甚至发现它cherry-pick不支持--skip-empty--empty-commpit=skip或任何其他。{ / p>

我检查过git rev-list有一个选项--remove-empty,但它没有任何帮助。

2 个答案:

答案 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提出,他就是这个想法。