【问题标题】:How do I move a Git branch out into its own repository?如何将 Git 分支移到其自己的存储库中?
【发布时间】:2011-01-14 16:27:04
【问题描述】:

我有一个分支,我想将它移到一个单独的 Git 存储库中,并在此过程中最好保留该分支的历史记录。到目前为止我一直在看git filter-branch,但我无法确定它是否可以做我想做的事情。

如何将 Git 分支提取到自己的存储库中?

【问题讨论】:

    标签: git branch extract


    【解决方案1】:

    您可以简单地将分支推送到新存储库。它的所有历史都会随之而来。然后您可以选择是否从原始存储库中删除分支。

    例如

    git push url://to/new/repository.git branch-to-move:new-branch-name
    

    对于新存储库,new-branch-name 通常是 master。

    可以使用git init 创建一个新的空存储库。

    【讨论】:

    • 以防万一有人想知道,我将 URL 替换为 Git 存储库目录的路径,效果很好。
    • 也可以在新仓库中命名分支名称:git push url://to/new/repository.git branch-to-move:new-branch-name
    • Yves 上面的评论是正确的,否则你将没有主人,克隆过程将结束warning: remote HEAD refers to nonexistent ref, unable to checkout.。如果已经在那个阶段,只需使用git checkout -b branch-to-move 并且您是安全的,或者您只需使用git checkout -b master 即可拥有您的主分支:)
    • 请注意,这不仅会复制分支及其历史记录,还会将所有历史记录复制回存储库的开头,包括沿指定分支分支的分支的历史记录
    • 如果这个答案也让你感到困惑,这是我如何理解它以使其工作:1)在你的终端中,位于包含你想要的 repo 和分支的目录中做一个新的回购; 2)url 应该是一个 git url,比如 git@github.com:brianzelip/groceries.git; 3) branch-to-move 是您要创建新仓库的当前仓库的分支; 4)new-branch-name 是您希望在正在创建的新仓库中的新分支的名称,即:master
    【解决方案2】:

    这将保留所有分支的历史记录,但让您的副本特别指向一个分支:

    git clone -b newbranch CurrentRepo NewRepo
    

    这不会“移动”任何东西,只是制作一个副本。

    【讨论】:

    • 值得注意的是clone -b 是新的。它需要 git >= 1.6.5(2009 年 10 月发布)。
    • 我无法让它工作,但那是在我看到查尔斯·贝利的消息之前。
    猜你喜欢
    • 2017-03-13
    • 2017-03-10
    • 1970-01-01
    • 2014-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多