Git从master创建分支,并在顶部重新设置基础
我有以下存储库Git从master创建分支,并在顶部重新设置基础,git,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 并将新分支移到主分支的顶部 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 /
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
并将新分支移到主分支的顶部
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
不知道如何实现这一点
//编辑
Commit
I
是从githubui还原的,所以它的CommitC-D-E-F-G-H
被压缩在一起。(或者I
是合并提交,J
是恢复提交。)如果您希望在自己的分支上提交C、D、E、F、G、H,而不包含I、J、K和L,则应执行以下操作:
git checkout H
git checkout -b 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
这将使您的历史看起来像这样:
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
尝试直接从master中挑选所需的提交范围
git cherry-pick C..H
为什么你认为你需要一些承诺才能在历史上出现两次?看起来更像是个问题。@Romanvaleri我更新了问题。我是revert commit。cherry pick提交范围和相同提交列表之间有什么区别?我认为除了方便之外没有其他区别,您甚至可以逐个应用它们。