我正试图切断存储库历史的一部分,所以我
如上所述,可以使用git replace
将其移植回存储库
在this article。
文章中描述的案例与我的案例之间的主要区别 存储库是,我的主分支有现有分支。我会 喜欢保持那些分支及其分支点的布局 在我删除了历史后的等价物。
我的历史大概看起来像这样
cut here
|
v
o--o--o--o--o--o--o master
\ \ \
\ \ o--o A
\ o--o--o B
o--o--o C
在“cut here”提交之前,master没有分支。
我想要实现的目标是:
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
这意味着仅仅修改主人就不够了 初始树,但我还需要重播他们的所有现有分支 在高手变装之后等效的新提交。我不想只是 重播新主人的所有分支,因为那可能 有冲突。
有没有任何聪明且有希望的自动方式来做到这一点?
答案 0 :(得分:1)
这些命令将具有您正在寻找的结果:
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 /。如果 您运行此命令时已定义任何移植或替换引用 会使它们成为永久性的。