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

如何将整个git存储库移动到其他地方?,git,Git,我们在GitHub上有很多存储库,我们希望完全切换到另一个提供商。我是Mercurial的粉丝,所以我对Git分支不太熟悉,不幸的是,在克隆Git存储库时,必须指定一个分支,否则它将克隆主分支(如果我在这里没有完全错的话) 更具体地说,举个例子,我们假设有一个名为hello的项目,它有几个分支(master,a,b)。我想移动它,然后通过删除原始存储库,继续在新存储库中工作 因此,我们有一个存储库: git@github.com:lipis/hello.git 我们想把它转移到: ssh://

我们在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

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

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

为了详细说明
git clone
的工作原理,假设我们从一个存储库
origin
中进行克隆,该存储库具有分支
master
a
b
。然后在新存储库中,我们得到分支
master
origin/master
origin/a
,和
origin/b
,我们可以像
git branch a origin/a
那样分支,在新存储库中获得我们自己的
a


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

。因此,更具体地说,如果我们有这个hello项目,而我的机器上没有任何东西。。从克隆它到推动它的确切步骤是什么。。?谢谢你的理论,但仍然令人困惑。。因为我想在40个项目中实现自动化。。最好有一个过程:)@Lipis
git clone--mirror
然后
git push--mirror
--mirror
的原因是它确保保留所有引用。然后,您将需要重新配置您的
源文件
远程文件,以指向窑中的新存储库。当我执行
git克隆--mirror
时,它将创建一个
hello.git
目录,其中只包含与git相关的文件,而不包含项目本身。。我遗漏了什么吗?@Lipis不,你没有遗漏任何东西:
git克隆--mirror
总是一个空的repo(即没有工作树)。例如,请参见。@Lipis一旦推到回转窑,您可以只克隆本地的一个并安装新的远程设备,也可以克隆新的远程设备(两者都不使用
--mirror
)<代码>--mirror纯粹是因为我们希望新遥控器是旧遥控器的镜像。无论如何,本地镜像只是暂时的。您要切换到的提供商应该有关于这种情况的说明-考虑到GitHub将是他们的竞争对手,他们会经常遇到这个问题。@GoZoner我不同意,像这样的东西对GitHub一点也不具体。一般来说,可能是从另一个站点进行转换,但不仅仅是为了GitHub。@GoZoner,尽管你可能是对的。。我想知道我自己怎么能做到。。因为使用mercurial,您只需在
hgrc
中添加一行,或者只需点击任何url,您就拥有了所有内容。。但不使用git:(@Lipis使用git真的很简单,它只是一个克隆/推送。我不知道你为什么要增加这种情况的复杂性。我感觉你不理解git在基本层面上是如何工作的。试着阅读“git自下而上”@或者,你的答案或多或少是完整的。我明天将进行试验。但通过简单的克隆/推送,我在新回购协议中看不到任何分支。或者可能我完全错过了什么;)我们明天再看。。谢谢