将具有历史记录的Git分支移至新仓库

时间:2018-08-30 15:05:56

标签: git git-merge git-rebase git-remote

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

  • 主*
  • 前端
  • 后端
  • api

我想将它们分解为不同的独立存储库。我已经为每个仓库创建了新的仓库。我希望每个分支及其所有提交历史记录都移到新的单独存储库中。

1 个答案:

答案 0 :(得分:4)

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

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

另一方面,如果您的每个分支都包含所有代码,并且您想要重写每个“新”存储库的历史记录以仅包含相关代码,那么您可能要使用git filter-branch 。它有很多选项,因此如果没有更多具体细节,我无法确切地说出您将使用什么选项,但是子目录过滤器可能会很有趣。

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