Git 重定基时如何从父分支中删除提交?

Git 重定基时如何从父分支中删除提交?,git,rebase,Git,Rebase,假设我有一个分支小部件,它是通过分支功能并添加几个关于构建小部件的提交来实现的 我现在希望小部件可以在master中使用,而不需要其他功能。有没有一种自动生成新版本的widget的方法,它只包含master以及关于widget的内容 简单地签出widget和执行git-rebase-master是行不通的,因为这会带来该特性的所有其他部分 我可以执行git rebase--interactive master,但这需要手动识别和删除与小部件无关的提交。有没有命令可以让我给这三个分支命名,并让它自

假设我有一个分支
小部件
,它是通过分支
功能
并添加几个关于构建
小部件
的提交来实现的

我现在希望小部件可以在
master
中使用,而不需要其他功能。有没有一种自动生成新版本的
widget
的方法,它只包含
master
以及关于widget的内容

简单地签出
widget
和执行
git-rebase-master
是行不通的,因为这会带来该特性的所有其他部分


我可以执行git rebase--interactive master,但这需要手动识别和删除与小部件无关的提交。有没有命令可以让我给这三个分支命名,并让它自动完成这项工作?

一个非常简单的方法是对从master创建的新分支进行cherry pick提交:

git checkout -b widget-2 master
git cherry-pick feature..widget

# then to apply that to the real widget branch and get rid of the temp

git checkout -B widget widget-2
git branch -d widget-2

但现在我想起来,我们完全可以跳过临时分支:

git checkout --detach master
git cherry-pick feature..widget
git checkout -B widget HEAD
你有这个:

0-0-0-0-0-0 <--master
     |-0-0-0-0-0-0 <--feature
                 |-0-0-0-0-0 <--widget

看起来很完美,我不记得你可以给cherry pick一个这样的提交范围;git reset——硬件小部件-2;git branch-d widget-2。
0-0-0-0-0-0 <--master
     |    |-0-0-0-0-0 <--widget
     |-0-0-0-0-0-0 <--feature
git rebase --onto master feature widget