Der Shallow-Trade-off
Ein Shallow Clone (--depth=N) ladt nur die letzten N Commits herunter. Schneller, kleiner, aber mit Vorbehalten: viele historie-abhangige Operationen werden unmoglich oder falsch.
Grundlegender Aufruf
git clone --depth=1 https://example.com/repo.git
git clone --depth=50 --no-tags https://example.com/repo.git
git clone --shallow-since=2024-01-01 https://example.com/repo.git
git clone --shallow-exclude=v1.0.0 https://example.com/repo.git
Single-Branch
git clone --depth=1 --no-single-branch https://example.com/repo.git
Was bricht
git logstoppt an der Shallow-Grenze.git blameordnet tiefere Anderungen dem Grenz-Commit zu.git bisectkann nur innerhalb des Shallow-Fensters suchen.git merge-basekann fehlschlagen.
Spater erweitern
git fetch --unshallow
git fetch --depth=1000
git fetch --shallow-since=2023-01-01
CI-Muster
git clone --depth=1 --no-tags --filter=tree:0 \
--branch "$CI_COMMIT_REF_NAME" "$CI_REPOSITORY_URL" .
Wann Shallow vermeiden
- Release-Builds, die git describe einbetten.
- SBOM/Lizenz-Scanner, die uber die Authorship laufen.
- Bisect- oder Blame-Schritte in CI.
Haufige Fehler
--depth=1 in einer Release-Pipeline verwenden, die git describe ausfuhrt, und v0.0.0-unknown drucken.