Spostare un repository git su un altro server
Domanda
Ho un clone / repository git su un server di sviluppo, ma ora sto passando a un altro. Non voglio impegnare tutte le mie filiali locali e le modifiche al repository principale, quindi come posso fare una copia esatta di tutto su oldserver in newserver?
Ho provato oldserver: ~ $ scp -rp project server: ~ / project
ma poi ho appena ricevuto un sacco di " typechange " errori durante il tentativo di fare qualsiasi cosa sul newserver.
Qualcuno ha detto qualcosa sulle modalità x, ma come posso preservarlo quando si spostano file tra server?
Soluzione
Se vuoi una soluzione git, puoi provare
git clone --mirror <oldurl> <newurl>
sebbene questo sia solo per i repository nudi.
Se si tratta di un repository non nudo, è possibile eseguire anche il normale clone, seguito da qualcosa del genere:
git fetch origin
git branch -r | grep '^ *origin/[^ ]*
Il passaggio intermedio può ovviamente essere fatto in 5000 modi diversi, ma questo è uno! (nota che la linea di continuazione \ non è necessaria dopo il pipe in bash - sa che ha bisogno di più input)
Infine, suggerirei di usare rsync invece di scp (probabilmente con le opzioni -avz?) se vuoi copiare direttamente. (Cosa sono esattamente questi errori di scambio di caratteri?)
|
while read rb; do git branch --no-track ${rb#*/} $rb; done
git remote rm origin
Il passaggio intermedio può ovviamente essere fatto in 5000 modi diversi, ma questo è uno! (nota che la linea di continuazione \ non è necessaria dopo il pipe in bash - sa che ha bisogno di più input)
Infine, suggerirei di usare rsync invece di scp (probabilmente con le opzioni -avz?) se vuoi copiare direttamente. (Cosa sono esattamente questi errori di scambio di caratteri?)
Altri suggerimenti
In realtà l'ho fatto, e tutto quello che ho fatto è stato tarare prima il repository e scapparlo. Penso che anche scp -rp funzionerebbe.
" Typechange " farebbe normalmente riferimento a cose come un link simbolico che diventa un file o viceversa. I due server eseguono lo stesso sistema operativo?
Potresti anche provare la semplice soluzione stupida - non preoccuparti di come sono arrivati ??i typechanges, ma lascia che git li risolva con un comando di reset:
git reset --hard HEAD
Ciò ha senso solo se (1) i problemi riguardano tutti i file estratti (e non la struttura del repository stesso) e (2) non hai apportato modifiche su newserver che devi preservare.
Date queste avvertenze, ha funzionato per me quando mi sono ritrovato con lo stesso problema e non richiede di pensare agli interni di git o al modo in cui il processo di trasferimento dei file sta preservando gli attributi.