如何合并一个没有历史记录的 git 仓库

如何合并一个没有历史记录的 git 仓库

我有一个主 git 存储库和另一个存储库,其中包含曾经从其他代码库复制而没有历史记录的代码,但随后再次由 git 进行版本控制。

因此,第二个存储库具有更年轻的历史,从主存储库中一次提交的某个状态开始。

再次合并这个烂摊子的最佳方法是什么?我想我首先需要找出复制是在哪个提交时进行的,该怎么做?如何将存储库合并为新分支,但保留完整的历史记录?

答案1

首先导出旧 repo 的补丁。

在新的存储库中按顺序逐个应用补丁。前几个补丁应该会导致冲突。这些应该是存储库中已有的补丁。一旦您找到没有失败的补丁,您就可以从那里开始在新的存储库中创建更改历史记录。

该方法存在以下问题:

  • 需要逐一提交。
  • 作者和提交信息丢失。

还有另一种方法,即暴力破解提交哈希(参见吉特布鲁特) 的第一个非冲突提交。然后从该提交到旧存储库中的最后一个提交创建存储库的捆绑包。将此捆绑包应用于新存储库。

强制执行提交哈希并非易事,查看提供的项目(设置了提交的前缀)可以帮助您入门。

相关内容