如何将Git分支移到其自己的存储库中?


180

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

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

Answers:


280

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

例如

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

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

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


15
万一有人想知道,我将URL替换为Git存储库目录的路径,并且效果很好。
奥帕霍

48
您也可以在新存储库中命名分支名称: git push url://to/new/repository.git branch-to-move:new-branch-name
Yves Van Broekhoven 2013年

4
伊夫(Yves)的上述评论是正确的,否则您将没有主人,并且克隆过程将结束warning: remote HEAD refers to nonexistent ref, unable to checkout.。如果已经在那个阶段,那就随便走吧,git checkout -b branch-to-move那么您就安全了,或者只是随便去git checkout -b master拥有您的主分支:)
Ain Tohvri 2014年

git checkout -b master解决了我的问题,它在屏幕上error: src refspec master does not match any.(只想知道为什么我没有看到我所在的分支名称)谢谢
kangkyu 2015年

2
如果这个答案也让您感到困惑,请按照以下说明进行操作:1)在您的终端中,位于包含要创建新仓库的仓库和分支的目录中;2)url应该是git网址,例如git@github.com:brianzelip / groceries.git; 3)branch-to-move是您要制作为新存储库的当前存储库的分支;4)new-branch-name是您要为正在创建的新仓库中的新分支命名的名称,即:master
Brian Zelip

19

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

git clone -b newbranch CurrentRepo NewRepo

这不会“移动”任何东西,只是进行复制。


2
值得一提的clone -b是新的。它要求git> = 1.6.5(2009年10月发布)。
CB Bailey 2010年

我很难让它正常工作,但是那是在我看到查尔斯·贝利的消息之前。
奥帕霍
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.