将具有历史记录的 Git 分支移动到新的 repo

Moving Git branch with history to new repo

我有一个 Git 存储库,在不同的分支上有多个项目

我想将它们分解成不同的独立存储库。我已经为每个创建了新的存储库。我想让每个分支及其所有提交历史移动到他们新的个人存储库。

如果每个分支只包含相应的代码,那么这很简单。使用 git clone --single-branch --branch <original-repo-url> 创建新存储库实际上更简单,但如果您已经 inited 并且只想引入历史记录,则可以执行类似

的操作
git fetch <original-repo-url> +frontend:master

如果你没有在新的回购中创建第一个分支,你会得到奇怪的行为 - 所以在这种情况下,你首先只创建一些虚拟提交,然后从分支分离,这样更新就会进行通过.

git commit --allow-empty -m temp 
git checkout --detach
git fetch <original-repo-url> +frontend:master
git checkout master

另一方面,如果您的每个分支都包含所有代码,并且您想重写每个 "new" 存储库的历史记录以仅包含相关代码,那么您可能想使用 git filter-branch。它有很多选项,所以如果没有更具体的细节,我不能确切地说出你会使用哪些选项,但子目录过滤器可能会引起你的兴趣。

文档位于 https://git-scm.com/docs/git-filter-branch