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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top