如何将旧提交转换为主提交,将新提交转换为新分支?

时间:2014-02-12 12:33:13

标签: git merge git-merge

它类似于Make the current git branch a master branch但有点不同。

我已经在master中做了一些提交,但是现在它们不会被使用,我希望将来保留它们,将它变成一个新的分支,我想得到一个旧的提交并合并一些功能(如cherry-pick) )然后使其成为当前的主人。

      .----------E (no branch)
     /          /
----A---B---C---D (master)

版本D是当前版主,我希望E成为一个版本。我这样做:

git checkout A
git merge --no-commit --no-ff D
# do some changes here
git commit -m 'message for E'

这会生成no branch提交,我想知道如何将其转换为主要内容并将BCD转为新分支。

上面答案的不同之处在于我不希望E成为新分支,我希望将其命名为master,并将其他分支更改为新分支。

2 个答案:

答案 0 :(得分:1)

就像您关联的帖子一样,只有在您没有push编辑master的情况下才能执行此操作。

首先,使用mastergit branch new-branch master创建一个新分支。你最终应该

      .----------E (no branch)
     /          /
----A---B---C---D (master) (new-branch)

现在,使用

将主人移至E
git checkout master
git reset --hard E

您的最终网络应该类似于

      .----------E (master)
     /          /
----A---B---C---D (new-branch)

答案 1 :(得分:0)

此命令将创建指向D的新分支。

git branch new-branch D

这会将当前分支提示设置为提交A,而所有更改都将保留在原位:

git reset --soft A
# do some changes here
git commit -m 'message for E'

这些命令不会像您的示例中那样创建合并提交,但我猜您不需要它。