【发布时间】:2019-02-05 14:07:32
【问题描述】:
我有一个 Git 存储库,其中包含不同分支上的多个项目
- 主人*
- 前端
- 后端
- API
我想将它们分解为不同的独立存储库。我已经为每个创建了新的存储库。我希望将每个分支及其所有提交历史记录移至新的单独存储库。
【问题讨论】:
-
我同意这是重复的,但我最喜欢这个答案。
标签: git git-merge git-rebase git-remote
我有一个 Git 存储库,其中包含不同分支上的多个项目
我想将它们分解为不同的独立存储库。我已经为每个创建了新的存储库。我希望将每个分支及其所有提交历史记录移至新的单独存储库。
【问题讨论】:
标签: git git-merge git-rebase git-remote
如果每个分支只包含相应的代码,那么这很简单。实际上使用git clone --single-branch --branch <original-repo-url> 创建新的repo 更简单,但是如果你已经inited 并且只想引入历史,你可以这样做
git fetch <original-repo-url> +frontend:master
如果你没有在新的 repo 中创建第一个分支,你会得到奇怪的行为——所以在这种情况下,你首先只需创建一些虚拟提交,然后从分支中分离,这样更新就会通过。
git commit --allow-empty -m temp
git checkout --detach
git fetch <original-repo-url> +frontend:master
git checkout master
另一方面,如果您的每个分支都包含所有代码,并且您想重写每个“新”存储库的历史记录以仅包含相关代码,那么您可能希望使用git filter-branch。它有很多选项,因此如果没有更具体的细节,我无法确切说明您将使用哪些选项,但子目录过滤器可能会引起您的兴趣。
【讨论】: