fast-export y fast-import
git fast-export serializa un repositorio a un stream de comandos; git fast-import reconstruye un repositorio a partir de uno. Juntos forman el protocolo de intercambio de datos de Git — usado por importadores (cvs2git, hg-fast-export) y por herramientas como git filter-repo internamente.
Exportar
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
Importar
mkdir new-repo && cd new-repo && git init
cat ../all.fi | git fast-import
git checkout main
Caso de uso: archivo deshidratado
git rev-list --objects --all | \
git pack-objects --stdout --revs --delta-base-offset \
> offline.pack
Builds determinísticos
git fast-export --all --no-data > metadata-only.fi
Anonimizar
git fast-export --all --anonymize > anon.fi
Cirugía vía filter-repo
git filter-repo usa fast-export internamente; es por eso que es rápido.
Errores comunes
Tratar streams fast-export como archivos portables — están atados a un formato Git.
Rendimiento
git fast-export --all | (cd /tmp/new && git init && git fast-import)