git - 将带有历史记录的 Git 分支移动到新的存储库

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

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

  • 大师*
  • 前端
  • 后端
  • api

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

    最佳答案

    如果每个分支只包含相应的代码,那么这很简单。使用 git clone --single-branch --branch <original-repo-url> 创建新的 repo 实际上更简单,但如果您已经 init ed 并且只想引入历史,你可以做类似的事情

    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
    

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

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

    关于git - 将带有历史记录的 Git 分支移动到新的存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52100244/

    相关文章:

    git 在 rebase 期间崩溃

    git - GitHub GPG key 的公共(public) URL 是什么

    git - 错误 `remote: fatal: bad object 0000000000000000000000000000000000000000` 是什么意思?

    git - pull 请求插件将 master merge 到 branch

    git - 将 (git) o​​rigin merge 到我当前的本地工作分支

    git - 我如何 git rebase 第一次提交?

    php - Composer 创建项目。指向特定分支

    linux - merge 远程仓库提交到本地

    git - 当本地主分支上没有工作时, git pull --rebase 是否与 git pull 相同?

    git - 在不改变内容的情况下 rebase