Back

Git Shallow Clone: Was es ist, wann man es nutzt und wie es funktioniert

Git Shallow Clone: Was es ist, wann man es nutzt und wie es funktioniert

Ein Repository mit git clone zu klonen bedeutet normalerweise, dass die gesamte Commit-Historie heruntergeladen wird. Aber was, wenn Sie nicht die komplette Historie benötigen? Hier kommen Shallow Clones ins Spiel. In diesem Artikel erklären wir, was ein Shallow Clone ist, wie er funktioniert und wann es sinnvoll ist, ihn zu verwenden — mit kopierbereiten Beispielen.

Die wichtigsten Punkte

  • Ein Shallow Clone begrenzt die Menge an Historie, die während git clone abgerufen wird
  • Ideal für CI, große Repositories oder schnelle Einrichtungen
  • Erfahren Sie, wie man --depth, --single-branch und --shallow-since verwendet

Was ist ein Shallow Clone in Git?

Ein Shallow Clone ist ein Git-Clone, der nur einen Teil der Repository-Historie abruft, anstatt alles von Anfang an zu laden. Dies reduziert die Download-Größe und -Zeit erheblich. Es ist besonders nützlich, wenn:

  • Sie nicht die vollständige Commit-Historie benötigen
  • Sie eine schnellere Einrichtung für CI/CD-Pipelines wünschen
  • Sie mit großen Repositories arbeiten

Shallow Clone vs. normaler Clone

Funktion Normaler Clone Shallow Clone Lädt gesamte Historie Ja Nein (begrenzte Commits) Clone-Geschwindigkeit Langsamer Schneller Git-Operationen (rebase, bisect) Vollständig unterstützt Einige Einschränkungen Ideal für CI/CD Nicht optimal Ja

Wie führt man einen Shallow Clone durch

Nur den neuesten Commit klonen

git clone --depth=1 https://github.com/owner/repo.git

Einen bestimmten Branch mit begrenzter Historie klonen

git clone --depth=1 --branch main --single-branch https://github.com/owner/repo.git

Commits seit einem bestimmten Datum klonen

git clone --shallow-since="2024-01-01" https://github.com/owner/repo.git

Sie können auch --filter=blob:none mit partiellen Clones verwenden, wenn Sie das Herunterladen großer Dateien komplett überspringen möchten.

Kann man einen Shallow Clone nachträglich vertiefen?

Ja. Wenn Sie später feststellen, dass Sie die vollständige Historie benötigen:

git fetch --unshallow

Dies lädt die fehlenden Commits nach und wandelt Ihren Shallow Clone in einen vollständigen Clone um.

Wann sollte man einen Shallow Clone verwenden?

Verwenden Sie einen Shallow Clone, wenn:

  • Sie nur die neueste Version des Codes benötigen
  • Sie CI-Pipelines ausführen und schnellere Builds wünschen
  • Sie Code überprüfen oder testen, ohne die vollständige Historie zu benötigen

Vermeiden Sie Shallow Clones, wenn:

  • Sie git bisect, git rebase oder Merge-Operationen durchführen müssen
  • Sie Änderungen beitragen und Zugriff auf die Commit-Historie benötigen
  • Sie Tools entwickeln, die vom vollständigen Repository-Kontext abhängen

Häufige Probleme mit Shallow Clones

Git-Operationen können fehlschlagen

Einige Befehle setzen die vollständige Historie voraus und werfen Fehler in Shallow Clones:

  • git merge-base
  • git rebase
  • git bisect

Lösung: Führen Sie git fetch --unshallow aus oder vermeiden Sie Shallow Clones in diesen Kontexten.

Shallow Clones können Monorepo-Tools beeinträchtigen

Tools wie Lerna oder Nx setzen möglicherweise voraus, dass sie vollen Zugriff auf die Commit-Historie des Repositories haben, um Abhängigkeitsgraphen oder betroffene Pakete zu ermitteln. Testen Sie mit Ihrem spezifischen Toolset.

Fazit

Shallow Clones sind eine hervorragende Möglichkeit, Entwicklungs-Workflows zu beschleunigen, besonders in CI-Umgebungen oder bei der Arbeit mit großen Repositories. Seien Sie sich nur der Kompromisse bewusst — und Sie können später jederzeit ein “unshallow” durchführen, falls nötig.

FAQs

Ja. Er lädt weniger Commits, daher ist er schneller beim Herunterladen und Verarbeiten, besonders bei großen Repositories.

Ja, aber einige historienbezogene Operationen können fehlschlagen, wenn der Clone nicht vorher mit 'unshallow' erweitert wurde.

Führen Sie `git fetch --unshallow` aus, um Ihr Repository in einen vollständigen Clone umzuwandeln.

Ja — tatsächlich verwendet GitHub Actions standardmäßig Shallow Clones (mit `fetch-depth: 1`).

Listen to your bugs 🧘, with OpenReplay

See how users use your app and resolve issues fast.
Loved by thousands of developers