Ich möchte die Versionskontrolle verwenden, aber aus Sicherheitsgründen hat der Server, an dem ich arbeite, keinen Internetzugang: Ich kann nur Dateien auf einem USB-Stick verschieben. Kann ich Git mit diesem Setup weiterhin verwenden? Kann ich kleine Patches erstellen, die ich auf ein Git-Repository anwenden kann?
84
server
für eine Maschine zu verwenden, die nicht mit einem Netzwerk verbunden ist. Es könnte auch ohne Internetzugang nur ein lokales Netzwerk sein, aber es ist trotzdem ein Netzwerk.Antworten:
Klar, es gibt nichts an Git, das ein bestimmtes Protokoll erfordert. Nur aus der Box unterstützt die Standard - Client - HTTP (S), SSH, das benutzerdefinierten Git - Protokoll und, besonders wichtig, das lokale Protokoll. Dies erfordert lediglich einen Pfad zu einem lokalen
.git
Verzeichnis, das sich innerhalb des Arbeitsverzeichnisses (/path/to/project/.git
) oder nur eines leeren Verzeichnisses (/path/to/project.git
) befinden kann, obwohl die Benennung nur eine Konvention ist.Das heißt, Sie können natürlich ein Flash-Laufwerk als Fernbedienung hinzufügen:
oder unter Windows:
Oder fügen Sie es als zusätzliche Fernbedienung mit einem anderen Namen hinzu (wenn Sie lieber
origin
auf einen Internetserver verweisen möchten ):Dann können Sie wie bei jeder anderen Fernbedienung einfach auf diese drücken / ziehen.
Wenn Sie die Dokumentation lesen , werden Sie feststellen, dass es auch ein
file://
Protokoll gibt, das sich etwas anders verhält. Es wird empfohlen, einen lokalen Pfad zu verwenden, da dies einige zusätzliche Optimierungen erfordert. Wenn Sie dasfile://
Protokoll verwenden, verwendet git einige Standardnetzwerkkomponenten (um mit der lokalen Festplatte zu kommunizieren), die langsamer sind.quelle
file://
ist auch etwas flexibler. Hiermit können Sie einige Funktionen verwenden (z. B. flache Klone), die Sie mit einem lokalen Pfad nicht verwenden können.Auf einem einzelnen Computer ist nichts Besonderes erforderlich. Führen
git init
Sie das gewünschte Verzeichnis aus und arbeiten Sie wie gewohnt mit Git.Es gibt verschiedene Methoden, um ein Repository über mehrere Computer hinweg zu synchronisieren .
Methode 1a (überhaupt kein Netzwerk): Sie können ein 'Bare Repository' auf dem USB-Stick erstellen, darauf drücken und daraus ziehen, wie Sie es mit jedem anderen Remote-Repository tun würden. Mit anderen Worten, Repository-Vorgänge über lokale Pfade unterscheiden sich nicht von Vorgängen über SSH- oder HTTPS-URLs.
Erstellen Sie ein 'Remote'-Repository:
Übertragen Sie auf Computer 1 alles darauf:
In Computer 2 nun, wie immer.
(Sie können auch direkt von einer URL oder einem Pfad aus pushen / holen / ziehen.)
Methode 1b (internes Netzwerk): Wenn ein interner Server mit SSH verfügbar ist und Git installiert ist, können Sie dasselbe wie oben tun, indem Sie einfach eine SSH-Adresse mithilfe der Syntax
[user@]host:path
oder angebenssh://[user@]host/path
.Erstellen Sie ein Remote-Repository, indem Sie es
git init --bare <somepath.git>
auf dem angegebenen Server ausführen (über SSH).In Computer 1 auf dieselbe Weise wie zuvor gezeigt.
Oder wenn Sie es vorziehen:
In Computer 2 wieder dasselbe wie in Methode 1a.
Methode 2: Sie können "Transfer-Bundles" erstellen, die eine bestimmte Liste von Commits in einer einzigen Datei archivieren.
Leider merken sich die Bundle-Befehle nicht automatisch, was das letzte Mal bereits gebündelt wurde, sodass manuelles Markieren oder Notieren erforderlich ist. Ich nehme nur die Beispiele aus dem Git-Bundle-Handbuch.
Erstellen Sie auf Computer 1 ein Bündel der gesamten Verzweigung:
Ziehen Sie auf Computer 2 aus dem Bundle, als wäre es ein Repository:
Nachfolgende Bundles müssen nicht das ganze packen
master
- sie könnenlast-bundled..master
stattdessen nur die neu hinzugefügten Commits von packen .Erstellen Sie auf Computer 1 ein Bündel der neu hinzugefügten Commits:
Das gleiche wie oben.
quelle
manual tagging or note-keeping is needed
, eine Option, wenn das Repo nicht sehr groß istgit bundle create my.bundle --all
, ist.git/
versteckten Ordner zu finden ist), ohne einen "Arbeitsbaum" (die bearbeitbaren Dateien). Dies ist die bevorzugte Form für Repositorys, die Sie verwendengit push
.git bundle create
Eine der Methoden besteht darin, externen Speicher zum Austausch von Daten zwischen Repositorys zu verwenden. Dies ist ein Git-Bundle . Auf diese Weise haben Sie nur einzelne Dateien für jede Übertragung, keine Git-Zwischenablagen.
Jeder "Git Push" verwandelt sich in die Erstellung einer Datei, "Git Fetch" holt Dinge aus dieser Datei.
Demo-Sitzung
Erstellen des ersten Repositorys und Ausführen des ersten "Push"
"Klonen" in das zweite Repository (dh den zweiten Computer):
Einige Änderungen vornehmen und in eine andere Bundle-Datei "verschieben":
Änderungen in das erste Repository "ziehen":
Im Gegensatz zum ersten Bundle enthält das zweite nur einen Teil der Git-History und ist nicht direkt klonbar:
Die Verwendung von Bundles hat den Nachteil, dass Sie manuell angeben müssen, welchen Bereich von Commits jedes Bundle enthalten soll. Im Gegensatz zu
git push
,git bundle
zu verfolgen , was in früherem Bündel war nicht, müssen Sie manuell einstellenrefs/remotes/origin/master
oder Bündel würde größer sein , als es sein könnte.quelle
--all
Flagge zu erwähnen , um alles zu bekommen. Wenn das Repo klein genug ist, ist dies der einfachste Vorgang, da Sie einfach jedes Mal alles übertragen! Verlieren Sie nur nicht den Memory Stick - wahrscheinlich das größte Sicherheitsproblem!Sie müssen zuerst Git installieren . Führen Sie dann zum Erstellen eines neuen Repositorys den Ordner aus, den Sie kopiert haben:
Anschließend können Sie Dateien hinzufügen, über die Sie die Versionskontrolle durchführen möchten
git add
(-a
für alle Dateien hinzufügen ), und die Änderungen übernehmen (git commit
).Sie müssen sich nicht an eine Fernbedienung wenden, da Sie an Ihrem lokalen Verlauf arbeiten können (
git log
).Weitere Informationen finden Sie unter:
git
- die einfache AnleitungSchieben / Ziehen ohne Internet
Mit dem
git push
Befehl ist es möglich, über SSH zu pushen (über lokale Verbindung, Intranet):oder in den Ordner schieben:
Dies setzt voraus, dass Sie zwei Kopien Ihres Repositorys haben.
Gleiches gilt beim Ziehen, z
Patchen
Zum Anwenden von Patches können Sie den
patch
Befehl oder verwendengit apply
.Siehe: Patch- oder Diff-Datei aus dem Git-Repository erstellen und auf ein anderes Git-Repository anwenden .
quelle
Sie können Git auch lokal verwenden. Dann werden Ihre Commits nur lokal gespeichert und Sie haben immer noch die Versionskontrolle (und können unterscheiden / zusammenführen usw.), aber Sie können von keinem anderen Computer aus auf das Repository zugreifen.
Sie können ein lokales Git-Repository starten, indem Sie es
git init
in Ihrem lokalen Ordner ausführen. Wie hier beschrieben .quelle