fast-export et fast-import
git fast-export sérialise un dépôt en stream de commandes ; git fast-import reconstruit un dépôt depuis un. Ensemble ils forment le protocole d'échange de données de Git — utilisé par les importers (cvs2git, hg-fast-export, p4-fast-export) et par des outils comme git filter-repo en interne.
Exporter
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
Importer
mkdir new-repo && cd new-repo && git init
cat ../all.fi | git fast-import
git checkout main
Cas d'usage : archive déshydratée
git rev-list --objects --all | \
git pack-objects --stdout --revs --delta-base-offset \
> offline.pack
Builds déterministes
git fast-export --all --no-data > metadata-only.fi
Anonymisation
git fast-export --all --anonymize > anon.fi
Chirurgie via filter-repo
git filter-repo utilise fast-export en interne ; c'est pour cela qu'il est rapide.
Erreurs courantes
Traiter les streams fast-export comme archives portables — ils sont liés à un format Git.
Performance
git fast-export --all | (cd /tmp/new && git init && git fast-import)