0

我需要使用 git 重新组织一个项目。这个项目目前有 3 个独立的(中央)存储库,我需要在它们之间来回移动大量文件。在这样做的同时,每个存储库都在进行开发,重组需要一些时间。我一直在每个各自的存储库中不断地从 master 重新构建我的重构分支。

是否有一种既定的方法来进行这种复杂的跨存储库重构,以保留跨存储库的历史记录并利用 git 跨存储库的重命名合并逻辑,例如将所有存储库移动到第三个存储库,进行合并并返回?

实际上,我有三个存储库,A、B 和 C。我想将文件从 B 移动到 A 和 C 并保留历史记录。这不是一个目录的简单移动,而是大量单个文件被移动到新位置、重命名、更新等。我一直在 A、B 和 C 之间工作,移动和更新文件,但这显然不会保留跨存储库移动的文件的历史记录。我想可以创建一个新的存储库 D,将 A、B 和 C 导入子目录,重新设置以将 A、B 和 C 上的各个提交合并到 D 上的一个新的大提交中,这将使 git 理解文件已被移动,而不仅仅是在一个地方删除并从另一个地方删除,然后将更改应用回每个单独的存储库?

4

1 回答 1

1

您可以获取存储库 B,克隆它,进行所有要更改文件的修改(移动位置、重命名、更新等)以准备存储库 A 的文件。您还可以使用filter-branch重写历史记录删除不需要的路径/文件。准备好后,您可以从存储库 A 中获取它作为分支。然后您只需将该分支合并到 A 主分支中。是的,git 可以合并来自不同存储库的分支,它使历史看起来很有趣——两个根(初始提交)在某个时候合并。

然后对 repo C 做同样的事情。

于 2013-07-26T13:40:14.493 回答