3

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

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

所以我们有这个存储库:

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
4

1 回答 1

5

git clone不会克隆特定的分支,它会克隆所有分支,然后签出 master。

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

为了详细说明如何工作,假设我们从具有分支、和git clone的存储库中克隆。然后在新的存储库中,我们得到了分支、、和,我们可以像分支一样在新的存储库中获取我们自己的副本。originmasterabmasterorigin/masterorigin/aorigin/bgit branch a origin/aa

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

于 2013-04-14T12:37:36.523 回答