Git 创建分支并将提交从一个主分支移动到另一个分支
我的“主”存储库有8个提交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 是否有直接执行此操作的命令 如果不是,那么哪一个是获得它的最佳
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