
jut
Ich möchte nicht das gesamte Repository klonen und ich werde keine Patches einreichen. Ich möchte in Zukunft problemlos neue Revisionen erhalten.
Ich habe versucht, mit git clone
aber dies erstellt eine Kopie des gesamten Repositorys (riesige Dateigröße) und das Nachverfolgen von Änderungen macht den Speicherplatz noch größer (100 MB an Dateien nehmen jetzt über 2 GB ein).
Ist das möglich?

Greg Hewgill
Verwenden git clone
mit dem --depth
Option eingestellt auf 1
um einen flachen Klon mit einem Verlauf zu erstellen, der auf den letzten Commit gekürzt ist.
Zum Beispiel:
git clone --depth 1 https://github.com/user/repo.git
Um auch verschachtelte Submodule zu initialisieren und zu aktualisieren, pass auch --recurse-submodules
und um sie oberflächlich zu klonen, pass auch --shallow-submodules
.
Zum Beispiel:
git clone --depth 1 --recurse-submodules --shallow-submodules https://github.com/user/repo.git
Alternative Lösung zum Ausführen von flachem Klonen (git clone --depth=1 <URL>
) wäre, wenn die Gegenseite es unterstützt, zu verwenden --remote
Option von git-Archiv:
$ git archive --format=tar --remote=<repository URL> HEAD | tar xf -
Oder, wenn das betreffende entfernte Repository mit einigen durchsucht werden kann Webinterface wie gitweb oder GitHub, dann besteht die Möglichkeit, dass es über eine Snapshot-Funktion verfügt und Sie die neueste Version (ohne Versionsinformationen) von der Webschnittstelle herunterladen können.

Erzähler des Chaos
Heutzutage, flache Klone werden in den meisten Fällen nicht empfohlen.
Während für den von Ihnen erwähnten Anwendungsfall (laden Sie die neueste Version herunter und berühren Sie sie nie wieder) git clone --depth=1
funktioniert, im allgemeineren Fall kann es zu Problemen kommen. Wenn Sie beispielsweise Ihren Klon mit Upstream auf dem neuesten Stand halten möchten, git fetch
ist bei einem flachen Klon viel teurer.
Wenn Sie weniger Daten herunterladen möchten, sind Teilklone für den allgemeinen Fall besser:
git clone --filter=tree:0 <url>
Dadurch wird immer noch der Commit-Verlauf heruntergeladen, aber es werden keine Dateibäume und Dateiinhalte für frühere Commits heruntergeladen. Abrufe von Upstream-Commits sind immer noch billig.
10180900cookie-checkWie verwende ich Git, um nur die neueste Version eines Projekts zu erhalten?yes
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
19. Januar 2014 um 13:28 Uhr