将带有历史记录的 Git 分支移动到新仓库

5

我有一个Git仓库,其中包含不同分支上的多个项目

  • master*
  • frontend
  • backend
  • api

我想将它们拆分成不同的独立仓库。我已经为每个创建了新的仓库。我希望将每个分支及其所有提交历史记录移动到它们各自的新仓库中。


1
可能是重复的问题,参考如何从现有仓库的分支创建一个新的GitHub仓库? - NullDev
这是一个重复的答案,我同意,但我喜欢这个答案最多。 - Proximo
1个回答

7
如果每个分支只包含相应的代码,那么这就很简单了。实际上,使用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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接