题
我在开发服务器上有一个git clone / repo,但我现在正转向另一个。我不想将所有本地分支和更改提交到主存储库,因此如何将oldserver上的所有内容精确复制到newserver?
我试过 oldserver:〜$ scp -rp project newserver:〜/ project
然后我只是得到了“typechange”的负载和负载。尝试在newserver上执行任何操作时出错。
有人说过x-modes,但是在服务器之间移动文件时如何保留呢?
解决方案
如果你想要一个git解决方案,你可以试试
git clone --mirror <oldurl> <newurl>
虽然这只适用于裸存储库。
如果这是一个非裸仓库,您也可以进行正常克隆,然后执行以下操作:
git fetch origin
git branch -r | grep '^ *origin/[^ ]*
中间步骤当然可以用5000种不同的方式完成,但那就是一个! (注意在bash中的管道之后不需要连续行\ - 它知道它需要更多输入)
最后,如果你想直接复制,我建议使用rsync而不是scp(可能带有-avz选项?)。 (这些typechange错误究竟是什么?)
|
while read rb; do git branch --no-track ${rb#*/} $rb; done
git remote rm origin
中间步骤当然可以用5000种不同的方式完成,但那就是一个! (注意在bash中的管道之后不需要连续行\ - 它知道它需要更多输入)
最后,如果你想直接复制,我建议使用rsync而不是scp(可能带有-avz选项?)。 (这些typechange错误究竟是什么?)
其他提示
我实际上已经做到了这一点,而我所做的就是先把回购邮件放在首位,然后将其翻过来。我认为scp -rp也会起作用。
&QUOT; Typechange&QUOT;通常会将符号链接变成文件,反之亦然。两台服务器是否运行相同的操作系统?
您可能还想尝试简单的愚蠢解决方案 - 不要担心typechanges如何到达那里,但让git使用reset命令修复它们:
git reset --hard HEAD
只有在(1)问题都与签出文件有关(而不是存储库结构本身)和(2)您没有对 newserver 进行任何更改时才有意义你需要保留。
鉴于这些警告,当我发现自己遇到同样的问题时,它对我有用,并且它不需要你考虑git的内部或文件传输过程保存属性的程度。