Frage

Ich habe einen Git -Klon/ein Repo auf einem Entwicklungsserver, aber ich wechsle jetzt zu einem anderen. Ich möchte nicht alle meine lokalen Filialen und Änderungen am Hauptrepository begehen. Wie kann ich also eine genaue Kopie von allem auf Oldserver zu Newserver erstellen?

Ich habe es versucht oldserver:~$ scp -rp project newserver:~/project

Aber dann bekomme ich nur Ladungen und Ladungen von "typechangen" Fehlern, wenn ich versuche, etwas auf dem Newsserver zu tun.

Jemand hat etwas über X-Modes gesagt, aber wie kann ich das beim Verschieben von Dateien zwischen Servern bewahren?

War es hilfreich?

Lösung

Wenn Sie eine Git -Lösung wünschen, können Sie es versuchen

git clone --mirror <oldurl> <newurl>

Dies gilt zwar nur für nackte Repositorys.

Wenn dies ein Repo von Nicht-Bareer ist, können Sie auch den normalen Klon machen, gefolgt von so etwas:

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

Der mittlere Schritt kann natürlich auf 5000 verschiedene Arten durchgeführt werden, aber das ist einer! (Beachten Sie, dass die Fortsetzungslinie nach dem Rohr in Bash nicht erforderlich ist - sie weiß, dass sie mehr Eingaben benötigt.)

Schließlich würde ich vorschlagen, RSYNC anstelle von SCP (wahrscheinlich mit -avz -Optionen?) Zu verwenden, wenn Sie direkt kopieren möchten. (Was genau sind diese typechanischen Fehler?)

Andere Tipps

Ich habe das tatsächlich getan, und alles was ich getan habe war das Repo zuerst und scp es über. Ich würde denken, dass SCP -RP auch funktionieren würde.

"Typechange" bezieht sich normalerweise auf Dinge wie eine Symlink, die zu einer Datei oder umgekehrt wird. Führen die beiden Server das gleiche Betriebssystem aus?

Möglicherweise möchten Sie auch die einfache dumme Lösung ausprobieren. Machen Sie sich keine Sorgen, wie die Typechäen dorthin gekommen sind, sondern lassen Sie Git sie mit einem Reset -Befehl reparieren:

git reset --hard HEAD

Dies macht nur sinnvoll, wenn (1) die Probleme alle auf die überprüften Dateien (und nicht die Repository-Struktur selbst) und (2) Sie keine Änderungen vorgenommen haben Newsserver was Sie bewahren müssen.

Angesichts dieser Vorbehalte hat es bei mir funktioniert, als ich mit dem gleichen Problem auftrat, und es erfordert nicht, dass Sie über Gits Interna nachdenken oder wie gut Ihr Dateitransferprozess Attribute aufrechterhalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top