【发布时间】:2011-01-14 16:27:04
【问题描述】:
我有一个分支,我想将它移到一个单独的 Git 存储库中,并在此过程中最好保留该分支的历史记录。到目前为止我一直在看git filter-branch,但我无法确定它是否可以做我想做的事情。
如何将 Git 分支提取到自己的存储库中?
【问题讨论】:
我有一个分支,我想将它移到一个单独的 Git 存储库中,并在此过程中最好保留该分支的历史记录。到目前为止我一直在看git filter-branch,但我无法确定它是否可以做我想做的事情。
如何将 Git 分支提取到自己的存储库中?
【问题讨论】:
您可以简单地将分支推送到新存储库。它的所有历史都会随之而来。然后您可以选择是否从原始存储库中删除分支。
例如
git push url://to/new/repository.git branch-to-move:new-branch-name
对于新存储库,new-branch-name 通常是 master。
可以使用git init 创建一个新的空存储库。
【讨论】:
git push url://to/new/repository.git branch-to-move:new-branch-name
warning: remote HEAD refers to nonexistent ref, unable to checkout.。如果已经在那个阶段,只需使用git checkout -b branch-to-move 并且您是安全的,或者您只需使用git checkout -b master 即可拥有您的主分支:)
url 应该是一个 git url,比如 git@github.com:brianzelip/groceries.git; 3) branch-to-move 是您要创建新仓库的当前仓库的分支; 4)new-branch-name 是您希望在正在创建的新仓库中的新分支的名称,即:master。
这将保留所有分支的历史记录,但让您的副本特别指向一个分支:
git clone -b newbranch CurrentRepo NewRepo
这不会“移动”任何东西,只是制作一个副本。
【讨论】:
clone -b 是新的。它需要 git >= 1.6.5(2009 年 10 月发布)。