繁体   English   中英

git:移动分支头

[英]git: moving branch head

我有两个git分支,“A”和“B”,并提交编号为1到8.我的历史看起来像这样

1 -> 2 -> 3 -> 4[A] -> 5 -> 6 -> 7 -> 8[B]

我想改变它,所以我的历史看起来像这样:

1 -> 2 -> 3 -> 4 -> 5 -> 6[A] -> 7 -> 8[B]

也就是说,我想将分支A的头部从提交4移动到提交6。

我用什么命令来做这个?

你可以运行:

git branch -f A 6
git checkout A
git reset --hard 6

这是rebase的一个特例,只是分支是空的:

git checkout A
git rebase B

rebase更为笼统; 它也处理这种情况:

之前:

                  A1 -> A2 -> [A]
                /
1 -> 2 -> 3 -> 4  -> 5 -> 6 -> 7 -> 8[B]

后:

                                      A1' -> A2' -> [A]
                                     /
1 -> 2 -> 3 -> 4  -> 5 -> 6 -> 7 -> 8[B]

合并A1'和A2'以解决父分支上4到8之间的增量。

Git rebase处理这个简单的案例没有麻烦。 我创建了一个repo,其中有两个提交在master ,一个分支br指向第一个提交。

$ git checkout br
Switched to branch 'br'
$ git rebase master
First, rewinding head to replay your work on top of it...
Fast-forwarded br to master.

噗,完了。 日志现在显示指向第二个提交的分支。

我们也可以实现这个“After”:[感谢M. Flaschen指出这个缺失]:

                            A1'' -> A2'' -> [A]
                           /
1 -> 2 -> 3 -> 4  -> 5 -> 6 -> 7 -> 8[B]

我们将命名特定的提交6,而不是重新定位到分支B,例如

git checkout A
git rebase 6   # rather than rebase B

当没有A1和A2提交时,这会减少到原始问题:将[A]指针从4移动到6。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM