2015-01-19 5 views
6

Ich brauche auf einer Offline-Maschine zu arbeiten, wo ich nicht meinen Repository zugreifen kann. Jetzt möchte ich auch Git nicht ganz verpassen.Copy git-Repository Offline-Maschine und Schieben/Ziehen über Memory-Stick

Fragen:

  • Was ist der beste Weg, um meine Repository auf eine Offline-Maschine über Memory-Stick zu kopieren?
  • Gibt es eine Möglichkeit Patches über das Dateisystem zu kopieren?

Edit: Ich soll gesagt haben, dass ich den Memory-Stick an einen Administrator übergeben werden müssen, die das Kopieren für mich tun werden, das heißt ich kann nicht den Stick mit meinem Benutzer montieren.

Antwort

10

Um ein komplettes Git Repo zu kopieren, müssen Sie nur den Ordner .git; es enthält alles. Git verwendet sichere Dateinamen und ignoriert Zeitstempel innerhalb des Repos, so dass diese Daten vor den üblichen Dateisystem-Macken sicher sind.

Erstellen Sie auf dem Zielcomputer einen Ordner und kopieren Sie den Ordner .git in den Ordner. Jetzt git checkout <branch> erhalten Sie eine Arbeitskopie.

Wenn Sie Patches anstelle des gesamten Repos hin und her verschieben möchten, werden sie von git format-patch <branch> erstellt. Der Befehl erstellt alle Patches, die zum Aktualisieren eines Remote-Repos erforderlich sind (d. H. Die Ausgabe enthält alles, was noch nicht übertragen wurde). Sie können auch Commit-IDs (= mit diesem Commit beginnen) oder Bereiche angeben.

Um sie anzuwenden, verwenden Sie git am < 0001.... auf dem Remote-Repo.

Verwandte:

+0

Guter Rat. Und nach der ersten Kopie können Sie z.B. Verwenden Sie "format-patch" und senden Sie die Patches per E-Mail an Sie, um zu vermeiden, dass Sie Ihren sysadm einbeziehen müssen, um Ihren Offline-Repo synchron zu halten. – drRobertz

4

Um Ihr Repo auf den Memory Stick zu kopieren, verwenden Sie einfach git clone und verwenden Sie dann git pull, um es zu aktualisieren.

ZB auf Ihrem Online-Computer, mit dem Memory-Stick, nicht montiert

cd <memory-stick-mount-point> 
git clone <local-path-to-git-repo> 

jetzt die <local-path-to-git-repo> wird die origin Fernbedienung für den Repo auf Ihrem USB-Stick, so können Sie später einfach nutzen git push/pull (wenn auf dem Online-Rechner montiert), um Ihre Offline-Arbeit zu synchronisieren.

Die git Repo auf dem Memory-Stick ist in sich abgeschlossen, so können Sie jetzt auf jedem Computer gegen das funktioniert, und dann synchronisieren, wie oben, wenn Sie es auf Ihrem Online-Maschine montieren.

bearbeiten, re:

Wenn Sie auf den Memory-Stick den Admin zu git clone das Repo fragen kann es in Ordnung ist: nicht die selbst haften montieren dürfen. Andernfalls können Sie Ihren Administrator einfach die gesamte project.git Verzeichnis kopieren (wenn es ein nackter Repo) oder Projekt/.git (sonst) auf dem Memory Stick, und Sie können gegen die arbeiten, um die Sache zu aufpassen, dass die Fernbedienungen usw. werden diejenigen der Online-Maschine sein.

Dann zieht kein Problem, aber drängen kann eine weitere Behelfslösung benötigen, wenn Sie nicht Ihre sysadm vertrauen, damit Sie Ihre merge Konflikte zu lösen. Wenn Sie Ihren eigenen Zweig haben, ist das Zusammenführen kein Problem. Sonst zu fusionieren "offline", können Sie zwei Offline-Kopien des Repo, eine, die Sie arbeiten, und eine, die Ihre "Herkunft" ist, und fragen Sie die sysadm zu git ziehen zu die „Herkunft“ Repo, und dann auf einem offline-Computer, tun die Zusammenführung zwischen den beiden Speicher-Stick repos und dann die sysadm fragen Sie Ihren Ursprung Repo in die on-line- zu verschmelzen.

Das fühlt sich ein bisschen spröde und offen für Race Conditions, aber ich würde wirklich versuchen, separate Zweige zu erstellen, bevor ich "offline gehe".

+0

Ich habe erklärt, sollte, dass ich nicht die mich halten montiert werden kann. Ich muss den Administrator bitten, den Inhalt auf das lokale Dateisystem zu kopieren. Hat das Auswirkungen auf den Git Repo? – Beginner

+0

Aktualisierte Antwort entsprechend. Aber Aarons Antwort ist knapper. Beachten Sie, dass ein Verzeichnis mit einem leeren Repo mit dem Verzeichnis .git in einem Repo mit einem Arbeitsverzeichnis identisch ist. – drRobertz

+0

Nein. Jedes Repo ist ein komplettes Repo. Sie können Änderungen von einem Repo zu einem anderen und umgekehrt mit Pull schieben. – Jepessen