Verwenden Sie git, um nur die neueste Version zu erhalten

380

Ich möchte ein Projekt verfolgen, das Git verwendet. Ich möchte nicht das vollständige Repository und den vollständigen Verlauf klonen, sondern nur die neueste Version und in der Lage sein, vom Remote-Projekt auf neue Versionen zu aktualisieren.

Ich habe versucht, git clone zu verwenden, aber dadurch wird eine Kopie des gesamten Repositorys erstellt (große Dateigröße), und durch das Verfolgen von Änderungen wird der Speicherplatz noch größer (100 MB Dateien belegen jetzt mehr als 2 GB).

Ich werde keine Patches einreichen und ich brauche den Verlauf nicht. Ich möchte nur die neueste Version wie in Subversion.

Ist das in git möglich?

yuit
quelle
2
Git 1.9 / 2.0 (Q1 2014) wird mit flachem Klonen viel effizienter sein: stackoverflow.com/a/21217267/6309 und stackoverflow.com/a/21217326/6309
VonC

Antworten:

552

Verwenden Sie die --depthOption in git clone:

Erstellen Sie einen flachen Klon mit einem Verlauf, der auf die angegebene Anzahl von Commits abgeschnitten ist.

Beispiel: git clone --depth=1 <remote_repo_url>

Greg Hewgill
quelle
87
Beispiel:git clone --depth=1 <remote_repo_url>
iDev247
14
Seit dem Festschreiben von 82fba2b in Git 1.9 bestehen diese Einschränkungen nicht mehr.
Niutech
1
Welche Einschränkungen?
Ignorant
4
@Triangles: Einschränkungen (nicht mehr aktuell): Ein flaches Repository weist eine Reihe von Einschränkungen auf (Sie können es nicht klonen oder abrufen, noch von dort hineinschieben oder hineinschieben), ist jedoch ausreichend, wenn Sie nur an der jüngsten Geschichte eines großen Repositorys interessiert sind Projekt mit einer langen Geschichte und möchte Fixes als Patches einsenden.
Odinho - Velmont
1
Die Option wurde hinzugefügtgit 1.8.4 .
ivan_pozdeev
79

Eine alternative Lösung zum Ausführen von flachem Klon ( git clone --depth=1 <URL>) wäre, wenn die Remote-Seite dies unterstützt, die --remoteOption des Git-Archivs zu verwenden :

$ git archive --format=tar --remote=<repository URL> HEAD | tar xf -

Wenn das betreffende Remote-Repository über eine Weboberfläche wie gitweb oder GitHub durchsucht werden kann , besteht die Möglichkeit, dass es über eine Snapshot-Funktion verfügt, und Sie können die neueste Version (ohne Versionsinformationen) von der Weboberfläche herunterladen.

Jakub Narębski
quelle
4
Diese Lösung erfüllt diese Anforderung jedoch nicht: "Ich möchte in der Lage sein, vom Remote-Projekt auf neue Revisionen zu aktualisieren". Da das Archiv im Grunde genommen heruntergeladen wird, kann es ein oder zwei Commits nicht schnell vorantreiben. "Shallow Clone" erlaubt das. Trotzdem denke ich, dass diese Lösung ihre Anwendungsfälle hat, die es wert sind, erwähnt zu werden.
VasiliNovikov