我在开发服务器上有一个git clone / repo,但我现在正转向另一个。我不想将所有本地分支和更改提交到主存储库,因此如何将oldserver上的所有内容精确复制到newserver?
我尝试了oldserver:~$ scp -rp project newserver:~/project
但是当我尝试在newserver上做任何事情时,我只是遇到了“typechange”错误的加载和加载。
有人说过x-modes,但是在服务器之间移动文件时如何保留呢?
答案 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的内部或文件传输过程保存属性的程度。