改变Git Parent Branch

时间:2017-04-06 18:08:33

标签: git branch

我们假设我们有一个分支结构,如:

develop   -> --- a --- b --- c
                  \           \
feature 1 ->       \           --- d --- e
                    \    
feature 2 ->         --- f --- g

在完成功能1的工作后,我认为它确实应该作为功能2的子任务分支。

功能1是否有办法撤消'在保留其提交的同时,分支开发和分支功能2?

示例:

develop   -> --- a --- b --- c    
                  \    
feature 1 ->       \         --- d --- e
                    \       /
feature 2 ->         f --- g

2 个答案:

答案 0 :(得分:6)

最简单的解决方案是使用带有--onto标志的rebase,如Git book中所述。命令:

git rebase --onto feature2 develop feature1

将来自feature1的{​​{1}}上的develop提交重新提交。

答案 1 :(得分:0)

通常情况下你会看git rebase这类事情,但它不会起作用,因为从feature1到feature2的rebase将包含提交b和c,你不会这样做想。

Willem建议使用cherry-pick可能是要走的路。

创建一个新分支:

git checkout -b feature1b feature1

Cherry选择了感兴趣的提交(这里我说" feature1&#34的最后两次提交,但是你可以使用实际的提交ID指定提交范围等):

git cherry-pick feature1~2..feature1

此时,分支feature1b与您想要的历史记录相匹配。您可以根据需要执行一些可选的清理:

删除旧分支:

git branch -D feature1

重命名新分支:

git branch -m feature1