[英]Rebasing a branch that has been branched from
我试图切断一部分存储库的历史记录,以便按照本文所述使用git replace
将其嫁接到存储库中。
本文中描述的案例与我的存储库之间的主要区别在于,我的master分支具有现有分支。 在删除历史记录后,我想保持这些分支的布局及其分支点的等效性。
我的历史大概是这样的
cut here
|
v
o--o--o--o--o--o--o master
\ \ \
\ \ o--o A
\ o--o--o B
o--o--o C
提交“此处剪切”之前,没有任何分支脱离主分支。
我要实现的是:
o--o--o history
initial tree at cut
|
v
o--o--o--o--o master
\ \ \
\ \ o--o A
\ o--o--o B
o--o--o C
这意味着仅在初始树上重新建立master的基础是不够的,但是我还需要在master的基础上重新对所有现有分支进行等效的新提交重播。 我不想只重播新主服务器上的所有分支,因为这可能会有冲突。
是否有任何智能且希望自动执行此操作的方法?
这些命令将为您寻找结果:
git checkout --orphan temp-branch CUT–COMMIT
git commit // This will create your new initial commit
git rev-parse HEAD // To get the SHA of this commit
git replace CUT-COMMIT NEW-COMMIT
git filter-branch -- --all
如果您对如何以及为什么这样有疑问,请留下评论。 您可能需要先备份存储库,然后再执行此类操作。
从过滤分支文档中 :
注意:此命令支持.git / info / grafts和.git / refs / replace /。 如果定义了任何嫁接或替换引用,则运行此命令将使它们永久化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.