将 repo git svn clone 与其他 git repo 合并

Merge repo git svn clone with other git repo

我的团队多年来一直在使用 SVN。 几个月前,我们通过简单地推送 SVN 分支切换到 Git,没有历史记录,并继续在 Git 上开发。 今天我们需要在 SVN 历史丢失之前找回它。 所以我用 git svn clone 把 SVN 变成了 Git.

所以我最终得到了一个 SVN 项目,在 Git 项目 (proj_with_history) 和一个 Git 项目中具有相同的初始提交与其中一个项目的最后一次提交相同proj_with_history.

的分支 (proj_without_history)

问题是,您如何 link/merge proj_with_history 和 proj_without_history,知道在 proj_without_history 上创建了新的分支和标签?

如果可能,我们希望在提交图中使此迁移透明,即使重写历史记录,只要避免冲突。

将 svn 克隆与您的 git 历史记录一起提取到 repo 中,将该 git 历史记录的根移植到转换后的 svn 提交上,其内容来自 (git replace --graft $theroot $theoriginaltip),在本地检查结果,然后用 git filter-branch 烘焙移植物,蛮力直接做的版本是 git filter-branch -- --all --tag-name-filter cat 完全放弃旧的历史并用具有扩展历史的新提示替换它.