Git从master创建分支并重新建立基础

时间:2020-02-07 15:09:50

标签: git

我有以下存储库

A-B-C-D-E-F-G-H-I-J-K-L

我想做

A-B-C-D-E-F-G-H-I-J-K-L
   \
    C-D-E-F-G-H

并将新分支移至master上

A-B-C-D-E-F-G-H-I-J-K-L
                       \
                        C-D-E-F-G-H

所以我做到了:

checkout B
checkout -b new-branch
cherry-pick C D E F G H
// so far it what i want
rebase new-branch master
// now I'm back in master like I did nothing

不确定如何实现。

//编辑

提交I是从github UI恢复的,因此它的提交C-D-E-F-G-H被压缩在一起。 (或者I是合并提交,而J是还原提交。)

2 个答案:

答案 0 :(得分:0)

如果要在没有I,J,K和L的自己的分支上提交C,D,E,F,G,H,则应执行以下操作:

git checkout H
git checkout -b new-branch

在new-branch上添加了更多提交后,您的历史记录如下:

master:    A-B-C-D-E-F-G-H-I-J-K-L
                          \
new-branch:                M-N-O

一旦您在新分支上进行了一些工作并提交了一些提交,就可以使用rebase在master之上播放不同的提交,如下所示:

git checkout new-branch
git rebase master

这会使您的历史记录如下:

master:    A-B-C-D-E-F-G-H-I-J-K-L
                                  \
new-branch:                        M-N-O

答案 1 :(得分:0)

尝试直接从master那里挑选一系列所需的提交。

git cherry-pick C..H