一尘不染

如何合并两个 Git 存储库?

javascript

考虑以下场景:

我在自己的 Git 存储库中开发了一个小型实验项目 A。它现在已经成熟,我希望 A 成为更大的项目 B 的一部分,它有自己的大存储库。我现在想将 A 添加为 B 的子目录。

如何在不丢失任何历史记录的情况下将 A 合并到 B 中?


阅读 169

收藏
2022-02-14

共1个答案

一尘不染

如果你想合并project-aproject-b

cd path/to/project-b
git remote add project-a /path/to/project-a
git fetch project-a --tags
git merge --allow-unrelated-histories project-a/master # or whichever branch you want to merge
git remote remove project-a

这种方法对我来说效果很好,它更短,在我看来更干净。

如果您想放入project-a子目录,您可以使用git-filter-repo(filter-branch鼓励)。在上述命令之前运行以下命令:

cd path/to/project-a
git filter-repo --to-subdirectory-filter project-a

合并 2 个大存储库的示例,将其中一个放入子目录:https ://gist.github.com/x-yuri/9890ab1079cf4357d6f269d073fd9731

注意:--allow-unrelated-histories参数仅在 git >= 2.9 后才存在。请参阅Git - git merge 文档/–allow-unrelated-histories

2022-02-14