将git repo移动到另一台服务器

时间:2009-10-27 14:50:05

标签: linux git scp

我在开发服务器上有一个git clone / repo,但我现在正转向另一个。我不想将所有本地分支和更改提交到主存储库,因此如何将oldserver上的所有内容精确复制到newserver?

我尝试了oldserver:~$ scp -rp project newserver:~/project

但是当我尝试在newserver上做任何事情时,我只是遇到了“typechange”错误的加载和加载。

有人说过x-modes,但是在服务器之间移动文件时如何保留呢?

3 个答案:

答案 0 :(得分:4)

如果你想要一个git解决方案,你可以试试

git clone --mirror <oldurl> <newurl>

虽然这只适用于裸存储库。

如果这是一个非裸仓库,您也可以进行正常克隆,然后执行以下操作:

git fetch origin
git branch -r | grep '^ *origin/[^ ]*$' |
    while read rb; do git branch --no-track ${rb#*/} $rb; done
git remote rm origin

中间步骤当然可以用5000种不同的方式完成,但那就是一个! (注意在bash中的管道之后不需要连续行\ - 它知道它需要更多输入)

最后,如果你想直接复制,我建议使用rsync而不是scp(可能带有-avz选项?)。 (这些typechange错误究竟是什么?)

答案 1 :(得分:1)

我实际上已经做到了这一点,而我所做的就是先把回购邮件放在首位,然后将其翻过来。我认为scp -rp也会起作用。

“Typechange”通常指的是像符号链接变成文件的东西,反之亦然。两台服务器是否运行相同的操作系统?

答案 2 :(得分:1)

您可能还想尝试简单的愚蠢解决方案 - 不要担心typechanges如何到达那里,但让git使用reset命令修复它们:

git reset --hard HEAD

只有在(1)问题都与签出文件有关(而不是存储库结构本身)和(2)您没有对 newserver 进行任何更改时才有意义你需要保留。

考虑到这些警告,当我发现自己遇到同样的问题时,它对我有用,并且它不需要你考虑git的内部或文件传输过程保存属性的程度。