如何在其他地方移动整个git存储库?

时间:2013-04-14 12:34:55

标签: git

我们在GitHub上有很多存储库,我们希望完全切换到另一个提供商。我是一个Mercurial粉丝,所以我不是很熟悉Git分支,不幸的是在克隆git存储库时你必须指定一个分支,否则它将克隆一个分支(如果我在这里没有完全错误)。

更具体地说,我们假设我们有一个名为hello的项目,它有一些分支(masterab)。我想移动它,然后通过删除原始存储库继续在新存储库中工作。

所以我们有这个存储库:

git@github.com:lipis/hello.git

我们希望将其移至:

ssh://lipis@lipis.kilnhg.com/lipis/hello

由于我们有40多个不同的项目,其中很多都有不同的分支,我的问题是如何将每个存储库(包括所有分支)完全移动到另一个存储库而不需要为每个项目拉动和推送单个分支?


如果有某种程序会很好:

$ git clone git@github.com:lipis/hello.git
$ cd hello
# some black git magic that only Linus understands..
# continue working with the newest repository only

1 个答案:

答案 0 :(得分:4)

git clone不会克隆特定分支,它会克隆所有分支,然后检出主分支。

最简单的方法是使用--mirror将存储库推送到新位置。你也可以从另一边克隆。您也可以只复制该文件夹。

要详细说明git clone的工作原理,假设我们从具有分支originmastera的存储库b进行克隆。然后在新的存储库中,我们得到分支masterorigin/masterorigin/aorigin/b,我们可以像git branch a origin/a一样分支来获取我们自己的副本{@ 1}}在新的存储库中。

a存储库推送可能很困难,因此您可能只需使用github(它会自动为我们设置所有引用)。这假设您拥有对git clone --mirror服务器的完全访问权限。如果没有,您应该从第3台计算机ssh,然后git clone --mirrorgit push --mirror服务器。