Ich muss ein vollständiges Repo auf einen neuen nicht vernetzten Computer übertragen, vorzugsweise als einzelne Dateieinheit. Das git Bündel ermöglicht einen git fetch
, git pull
Stil Betrieb in einer Umgebung sneakernet scheint aber davon ausgehen , dass Sie bereits eine funktionierende Version des Repo auf der Zielmaschine haben.
Was ist der richtige Aufruf an:
- Bündeln Sie alle Filialen im aktuellen Repo
- Starten Sie das neue Repo im Zielverzeichnis, dh installieren Sie das Root-Commit korrekt
Ich habe einen Patch stromaufwärts gesendet, um Folgendes zu verdeutlichen:
`git clone` can use any bundle created without negative refspecs
(e.g., `new`, but not `old..new`).
If you want to match `git clone --mirror`, which would clone other
refs such as `refs/remotes/*`, use `--all`.
If you want to provide the same set of refs that a clone directly
from the source repository would get, use `--branches --tags` for
the `<git-rev-list-args>`.
Also am $ git bundle create repo.bundle --branches --tags
besten zum Klonen passen.
$ git bundle create repo.bundle --all
liefert ein Spiegelbild Ihres Quellcomputers, einschließlich der Remote-Refs.
--all
Optionen sind nicht in meiner Manpage fürbundle
(ich sehe Version 1.7.6.msysgit.0), noch ist die Verwendung der .bundle-Datei im Abschnitt URLs fürclone
. Es gibt mir mehr Vertrauen, seine Verwendung zu empfehlen.git bundle create <file> <git-rev-list-args>
. Laufenman git-rev-list
(oderman git-log
) würde dir geben--all
. Ich stimme jedoch zu, dass dies in der Dokumentation zum Bundle-Befehl besser sichtbar sein sollte.git show-ref
", die die Optionen für die Git-Rev-Liste nicht enthalten.git-rev-list-args
So wählen Sie Refs aus, die pergit show-ref
Befehl angezeigt werden .--all
hat für mich Remote-Tracking-Zweige enthalten (Git 2.1.4). Ich konnterefs/remotes/origin/*
mitgit bundle list-heads bundlefile
oder sehengit ls-remote bundlefile
. Obwohl es wenig schwierig ist, sie aus dem Bundle zurückzubekommen.Klonen Sie zuerst das Repository und fügen Sie die
--mirror
Option hinzu.git clone --mirror [email protected]:path/repo.git
Dies stellt sicher, dass alle Remote-Verzweigungen auch lokale Zweige sind, die zur Bündelung bereit sind.
Dann renne
git bundle create repo.bundle --all
wie in der Antwort von Jakub Narębski beschriebenquelle
Ich würde vorschlagen, dass Sie den .git-Ordner tarieren oder komprimieren und ihn einfach am neuen Speicherort auspacken und dann tun
git reset --hard HEAD
. Alles, was für alle Zweige erforderlich ist, befindet sich unter .git. Sie müssen lediglich alle Fernbedienungen in der .git / config-Datei anpassen oder entfernen.quelle