[英]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.