Git mit Versionsverlauf exportieren

Lesezeit: 3 Minuten

Ich muss einen Git-Repository-Inhalt exportieren und in ein Ziel-Repository importieren. Ich kenne zwei Alternativen, um es zu tun, aber sie lösen mein Problem nicht

a) Fügen Sie das Quell-Repository als Remote hinzu und führen Sie eine Zusammenführung mit dem Ziel durch. Ich kann dies nicht verwenden, da sich beide Repositories nicht im selben Netzwerk befinden

b) Verwenden Sie git archive und kopieren Sie den Inhalt auf das Ziel. In diesem Git-Archiv gehen die Revisionsinformationen verloren.

Ich brauche etwas, das ein Archiv zusammen mit dem Versionsverlauf erstellt und es mir ermöglicht, das Ziel einzufügen. Wie kann dies geschehen?

git bundle ist genau für diesen Zweck vorgesehen.

Beispiel:

  1. Bündeln Sie Ihr Quell-Repository vollständig

    git bundle create my_repo.bundle --all

  2. Bringen Sie “my_repo.bundle” dorthin, wo Ihr Ziel ist

  3. Laden Sie von Ihrem Ziel Ihre Quell-Commit-Objekte hoch

    git bundle unbundle my_repo.bundle

    …ab diesem Punkt können Sie Ihre gewünschten Quell-Commits nach Herzenslust in Ihr Ziel-Repository zusammenführen/umbasieren/herauspicken.

    Ansonsten funktioniert das Ziehen genauso:

    git pull my_repo.bundle

Im Vergleich zum Klonen sind Bundles einfacher zu übertragen, da sie kleiner sind, da Ihre Dateien nicht im ausgecheckten Zustand übertragen werden.

Weitere Gründe für die Verwendung von Bundles:

  • Im Gegensatz zu verwenden clone --bare (wobei Ihre Dateien nicht ausgecheckt werden) werden Bundles erstellt und als einzelne Datei gepackt, sodass Sie keine zusätzliche Komprimierung/Tarballing benötigen.

  • Sie könnten auch einfach Ihr Quell-Repository (oder nur das .git-Verzeichnis) tarballen, aber Sie werden den ganzen überschüssigen Cache und Müll, der sich unter .git/ ansammelt, mitnehmen.

  • Du kannst auch git clone my_repo.bundle. Mehr Infos unter git-scm.com/docs/git-bundle

    – jpbochi

    6. März 2014 um 17:39 Uhr

  • Vor dem Entbündeln müssen Sie ein vorhandenes Ziel-Repository haben oder ein neues Repo erstellen, indem Sie den Befehl git init ausgeben, da Sie sonst eine Fehlermeldung erhalten würden.

    – Lin Song Yang

    14. Oktober 2016 um 7:23 Uhr

  • @LinSongYang Das neue Repo kann auch durch Klonen aus dem Bundle erstellt werden, wie im ersten Kommentar beschrieben.

    – Antak

    14. Oktober 2016 um 7:33 Uhr

  • Ich denke, ich werde dies für die Migration von Inhouse TFS 2013 zu VSTS versuchen. Vielen Dank!

    – JDPeckham

    31. Juli 2017 um 14:31 Uhr

Benutzer-Avatar
Hiery Nomus

Git klont das Repository auf einen USB-Stick, Laptop oder ein anderes Datenübertragungsmedium. Schließen Sie das an die andere Maschine an, fügen Sie das Medium als Fernbedienung hinzu und ziehen/verschmelzen Sie die Änderungen von dort …

Jeder Klon aus dem Repository enthält tatsächlich den gesamten Verlauf. Die Frage ist also wirklich, wie Sie einen Klon auf die andere Maschine bringen können.

Siehe auch: diese Frage

  • Also müssen wir klonen und dann unseren eigenen Archivierungsmechanismus verwenden, weil git archive den .git-Ordner überspringt, richtig?

    – Codestörer

    9. August 2012 um 15:53 ​​Uhr

  • Ja, im Grunde kann git-archive ein Zip/Tarball einer bestimmten Revision und/oder eines Teils des Baums erstellen, behält aber keine Historie bei.

    – Hiery Nomus

    9. August 2012 um 18:03 Uhr

Anscheinend möchten Sie einen Fork Ihres aktuellen Repositorys erstellen. Lassen Sie mich wissen, ob ich das richtig verstanden habe: Sie möchten ein bestimmtes Git-Repository klonen. Am Klon arbeiten und dann die Änderungen in das ursprüngliche Repository einführen?

Dies geschieht, indem ich einen Fork Ihres Repositorys erstelle und dann die Änderungen aus der ursprünglichen Quelle ziehe, um Änderungen zu übernehmen.

  • Das Quell-Repository ist nicht direkt zugänglich. (Kann also nicht zusammengeführt/geklont werden) Gibt es einen anderen Übermittlungsmechanismus, um Änderungen über zwei getrennte Repositories hinweg zu verschieben?

    – Codestörer

    9. August 2012 um 9:41 Uhr

  • Wenn auf das Quellverzeichnis nicht zugegriffen werden kann, wie planen Sie, eine Datei daraus zu kopieren?

    – verdammt

    9. August 2012 um 9:56 Uhr

  • Es muss ohne direkten Zugriff verteilt werden

    – Codestörer

    10. August 2012 um 1:19 Uhr

Sie können einfach den vollständigen Repository-Ordner komprimieren, dann auf die Ziel-Workstation kopieren (über USB-Stick usw.) und dieses lokale Repository als Remote-Repository hinzufügen. Dann können Sie abrufen und zusammenführen.

1256640cookie-checkGit mit Versionsverlauf exportieren

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy