如何将 Git 分支移到其自己的存储库中?
Posted
技术标签:
【中文标题】如何将 Git 分支移到其自己的存储库中?【英文标题】:How do I move a Git branch out into its own repository? 【发布时间】:2011-01-14 16:27:04 【问题描述】:我有一个分支,我想将它移到一个单独的 Git 存储库中,并在此过程中最好保留该分支的历史记录。到目前为止我一直在看git filter-branch
,但我无法确定它是否可以做我想做的事情。
如何将 Git 分支提取到自己的存储库中?
【问题讨论】:
【参考方案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 月发布)。
我无法让它工作,但那是在我看到查尔斯·贝利的消息之前。以上是关于如何将 Git 分支移到其自己的存储库中?的主要内容,如果未能解决你的问题,请参考以下文章