创建分支并将提交从 Main 移动到 Branch

时间:2021-02-20 17:04:01

标签: 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 中继续:

Main 1 - 2 - 3 - 4 - 5 - 9 - 10 - 11
BranchA                \ 6 - 7 - 8

是否有直接执行此操作的命令?

如果不是,获得它的最佳顺序是什么?

1 个答案:

答案 0 :(得分:1)

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

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

所以,正如评论中已经解释的那样:你有

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

所以 main 指向 8,我们 8。所以现在说 git branch branchA。现在你有

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

两个分支名称都指向 8。请注意,您仍在 main 上;您没有结帐 branchA 所以 HEAD 仍然指向 { {1}}。

由于 main 现在看起来完全符合您的需要,您现在只需说 branchA 即可移动 main。这只是抬起 git reset --hard HEAD~3 指针并移动它,因此它给出:

main

但这在拓扑上与您想要的相同:

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

仍然1 -- 2 -- 3 -- 4 -- 5 <- main <- HEAD \ -- 6 -- 7 -- 8 <- branchA 上,所以继续工作:添加并提交,添加并提交。

main

与此同时,1 -- 2 -- 3 -- 4 -- 5 -- 9 -- 10 <- main <- HEAD \ -- 6 -- 7 -- 8 <- branchA 坐在那里守着你 8 点的老地方。