Git 创建分支并将提交从一个主分支移动到另一个分支

Git 创建分支并将提交从一个主分支移动到另一个分支,git,github-pages,Git,Github Pages,我的“主”存储库有8个提交 Main 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 我想创建一个BranchA并在其上移动提交6、7、8: Main 1 - 2 - 3 - 4 - 5 BranchA \ 6 - 7 - 8 然后主要继续: Main 1 - 2 - 3 - 4 - 5 - 9 - 10 - 11 BranchA \ 6 - 7 - 8 是否有直接执行此操作的命令 如果不是,那么哪一个是获得它的最佳

我的“主”存储库有8个提交

Main 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 
我想创建一个BranchA并在其上移动提交6、7、8:

Main 1 - 2 - 3 - 4 - 5
BranchA                \ 6 - 7 - 8
然后主要继续:

Main 1 - 2 - 3 - 4 - 5 - 9 - 10 - 11
BranchA                \ 6 - 7 - 8
是否有直接执行此操作的命令


如果不是,那么哪一个是获得它的最佳顺序?

这里要理解的是Git中的分支不是东西。它们不是地点、提交集合或历史记录。它们只是名字。分支是当前附加到某个提交的名称;它是可移动的,因此可以根据需要附加到其他提交。“创建分支”只需创建一个名称并将其指向—默认情况下,指向我们现在所在的位置

HEAD
是一个更简单的名字;它只是(通常)指向您正在工作的分支名称

因此,正如在评论中已经解释的那样:你已经

1 -- 2 -- 3 -- 4 -- 5 -- 6 -- 7 -- 8 <- main <- HEAD
两个分支名称都指向8。请注意,您仍然在
main
;您没有签出
branchA
,因此
HEAD
仍然指向
main

由于
branchA
现在看起来正是您想要的样子,您现在可以通过说
git reset--hard HEAD~3
移动
main
。这只需提起
main
指针并移动它,就可以得到:

                  main <- HEAD
                    |
                    v
1 -- 2 -- 3 -- 4 -- 5 -- 6 -- 7 -- 8 <- branchA

与此同时,
branchA
坐在那里,在8点钟守住你的老位子。

我认为这不能直接完成,但是,在
main
上有
HEAD
,你可以运行
git branchA
git reset HEAD~3
。这是正确的答案。另请看,这是遗憾类型3。好的,谢谢,它工作得很好。在预处理结束时,我遇到了与Github同步的问题(不可能进行正常的推送),我使用了:>GitPush--force
                  main <- HEAD
                    |
                    v
1 -- 2 -- 3 -- 4 -- 5 -- 6 -- 7 -- 8 <- branchA
1 -- 2 -- 3 -- 4 -- 5 <- main <- HEAD
                     \
                      -- 6 -- 7 -- 8 <- branchA
1 -- 2 -- 3 -- 4 -- 5 -- 9 -- 10 <- main <- HEAD
                     \
                      -- 6 -- 7 -- 8 <- branchA