重新基准化时如何从父分支中删除提交?

假设我有一个分支widget,它是通过分支feature并添加一些有关构建widget的提交而制成的。

我现在希望该窗口小部件在master中可用,而没有其余功能。是否有一种自动的方法来制作仅由widget以及有关小部件的内容组成的master的新版本?

仅签出widget并执行git rebase master是行不通的,因为那样会使功能的所有其他部分都随之带来。

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

zkl829602 回答:重新基准化时如何从父分支中删除提交?

一种非常简单的方法是选择提交到从master创建的新分支中的

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

,您想将其转换为:

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

git rebase命令非常灵活。您可以将git rebase--onto选项一起使用来进行此操作:

git rebase --onto master feature widget
本文链接:https://www.f2er.com/3145711.html

大家都在问