网上搜索了很久也没有找到一个满足目标实现的方案,想在此请教一下大家。
问题的来源是这样的:部门内部原来的项目通过 svn 管理,有一个项目在某年开始在新的 svn 仓库进行了重构开发,结果导致并行存在着两个项目仓库。今年公司内部代码管理迁移到了 gitlab 托管,我将原来两个 svn 项目迁移到了同一个 git 仓库的两个“分支”。当时的参考资料没有留存,再搜索一次找到一篇文章:Git-合并两个不同的仓库,大概就是这样的流程。 其中的问题在于,如果我简单采用类似 git merge B --allow-unrelated-histories
这样的操作,分支将在现有的所有提交之后进行合并。这不是我想要的结果。
由于历史原因导致了现在同一个 git 仓库内的两个“分支”没有共同的祖先来源,本着保留提交历史记录的原因需要同时保留两个“分支”。这两个孤立的“分支”其中一条分支 A 基本不再开发,另一条分支 B 持续开发,B 分支起源时间处于第一条分支 A 的某两次提交 a1 、a2 时间节点之间。
我想:将 B 分支的起点连接在 A 分支 a1 的提交之后,达到在分支图上看 A 分支在 a1 提交之后开了新的分支 B 。具体的细节可以是 B 的源点上游直接是 A 分支的 a1 ,中间也可以增加必要的节点。相当于伪造一下项目的提交流程记录?(因为 B 分支的第一次提交内容就是项目文件的加入,可以在 A 分支上的 a1 提交后增加一个分支节点将文件全部删除提交,再续借上 B 分支(我想的))
有办法实现吗?具体命令是怎样的呢?
附:
现在的分支图:
大概想要实现的分支图:
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.