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