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

如何将Git分支移动到它自己的存储库中?,git,branch,extract,Git,Branch,Extract,我有一个分支,我想将其移动到一个单独的Git存储库中,理想情况下在这个过程中保留该分支的历史记录。到目前为止,我一直在研究git filter branch,但我不知道它是否能完成我想做的事情 如何将Git分支提取到它自己的存储库中?这将保留所有分支的历史记录,但要使您的副本特别指向一个分支: git clone -b newbranch CurrentRepo NewRepo 这不会“移动”任何东西,只是制作一个副本。您只需将分支推送到新的存储库即可。它的所有历史都将与之相伴。然后,您可以选

我有一个分支,我想将其移动到一个单独的Git存储库中,理想情况下在这个过程中保留该分支的历史记录。到目前为止,我一直在研究git filter branch,但我不知道它是否能完成我想做的事情


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

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

git clone -b newbranch CurrentRepo NewRepo

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

您只需将分支推送到新的存储库即可。它的所有历史都将与之相伴。然后,您可以选择是否从原始存储库中删除分支

e、 g

对于新存储库,新分支名称通常为master


可以使用
git init

创建一个新的空存储库,您只需使用
git push
,如下所示:

git push url://to/new/repository.git branch-to-move:new-branch-name
这里
url://to/new/repository.git
是Git存储库的URL,后跟
要移动的分支
是当前回购中的分支(您要移动的分支),而
新分支名称
是属于您要移动到的回购的新分支


对于新的存储库,在使用上述命令之前需要有一个初始提交。

值得注意的是,
clone-b
是新的。它需要git>=1.6.5(2009年10月发布)。我很难让它正常工作,但那是在我看到Charles Bailey的消息之前。为了防止任何人怀疑,我用git存储库目录的路径替换了URL,您还可以在新存储库中命名分支名称:
gitpushurl://to/new/repository.git 要移动的分支:新分支名称
Yves'上面的注释是正确的,否则您将没有主机,克隆过程将结束
警告:远程头指的是不存在的ref,无法签出。
。如果已经处于该阶段,只需使用
git checkout-b branch移动
,您就安全了,或者只需使用
git checkout-b master
,您的主分支:)
git checkout-b master
解决了我的问题,屏幕上显示了
错误:src refspec master不匹配。
(只是想知道为什么我没有看到我所在的分支机构的名称)谢谢,如果这个答案也让你感到困惑,那么我是如何理解它的,以便使其工作的:1)在你的终端中,位于包含回购协议的目录中,并将分支机构转换为新的回购协议;2)
url
应该是git url,如git@github.com:brianzelip/groceries.git;3)
要移动的分支
是当前回购的分支,您希望将其转换为新的回购;4)
new branch name
是您希望在正在创建的新回购协议中为新分行命名的名称,即:
master
git push url://to/new/repository.git branch-to-move:new-branch-name