由于某些原因(由于从SVN转换的复杂性),我有两个Git仓库:
- git repo A包含截至2021年12月31日的所有历史
- git repo B包含2022年1月1日以来的所有历史
现在,我想以一种我拥有整个历史的方式“合并”它们,即。首先是repo A的main
分支,然后是repo B的main
分支。
我还没有真正理解如何正确地做到这一点。
- 如果我只是合并两个repo,那么我会在最后得到一个合并提交,这也是非常没有意义的,因为我不想让repo A的内容合并到B中,因为B是最近的。
- 如果我在A的main上重基B的main,我得到了我想要的东西,但我不确定新生成的提交(来自repo B的提交)是否有我不想要的内容,例如。旧档案
有人能告诉我怎么做才合适吗?
2条答案
按热度按时间u3r8eeie1#
创建工作存储库。
将这两个分支提取到存储库中。
将BranchB重定基到BranchA上,保留BranchB的日志图。
当前BranchB包含BranchA和旧BranchB的历史。
假设分支A的头是
X
,分支B的根是Y
。上面的git rebase
可能无法按预期工作。它仍然可以合并X
和Y
。我不知道你的分支是什么样的。如果它不起作用,这里有另一个方法,我相信可以工作。获取2个分支后,首先在BranchA上创建一个等价的
Y
。然后将
Y
之后直到BranchB的头部的提交重定基到BranchA上,保留BranchB的原始日志图。第二种方法首先基于
X
创建一个提交Y'
。它不会合并X
和Y
。它与Y
具有相同的内容。git checkout Y
和git checkout Y'
生成相同的文件。ldfqzlk82#
你需要
1.从第二个历史的根提交创建一个新的提交:将第一个也是唯一的父节点设置为第一个历史的最后一次提交(git-replace(1))
1.重新计算第二个历史的图形(git-filter-repo(1))
然后你将有一个历史/图表。
演示