fast-export und fast-import
git fast-export serialisiert ein Repository in einen Strom von Befehlen; git fast-import rekonstruiert ein Repository aus einem. Zusammen bilden sie das Datenaustausch-Protokoll von Git.
Exportieren
git fast-export --all > all.fi
git fast-export --all --signed-tags=strip --tag-of-filtered-object=drop > clean.fi
git fast-export --reference-excluded-parents main..feature > topic.fi
Importieren
mkdir new-repo && cd new-repo && git init
cat ../all.fi | git fast-import
git checkout main
Anwendungsfall: dehydriertes Archiv
git rev-list --objects --all | \
git pack-objects --stdout --revs --delta-base-offset \
> offline.pack
Deterministische Builds
git fast-export --all --no-data > metadata-only.fi
Anonymisieren
git fast-export --all --anonymize > anon.fi
Chirurgie via filter-repo
git filter-repo verwendet fast-export intern.
Haufige Fehler
fast-export-Strome als portable Archive behandeln — sie sind zeilenorientiert und an die Git-Format-Version gebunden.
Performance
git fast-export --all | (cd /tmp/new && git init && git fast-import)