Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git从master创建分支,并在顶部重新设置基础_Git - Fatal编程技术网

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还原的,所以它的Commit
C-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提交范围和相同提交列表之间有什么区别?我认为除了方便之外没有其他区别,您甚至可以逐个应用它们。