git fast-export
Exportiert die Historie als fast-import-Textstream
Der Befehl 'git fast-export' schreibt die Historie von Branches als Textstream: jede Dateiversion (Blob) mit einer Marke und jeden Commit, der auf sie verweist. Der Stream lässt sich bearbeiten, filtern oder an git fast-import (oder ein anderes Versionsverwaltungssystem) geben, um die Historie neu aufzubauen — die Grundlage vieler Migrations- und Umschreibwerkzeuge.
Syntax
git fast-export [--all] [<rev-list-options>...]Optionen
Die richtige Option wählen
Historie übertragen
Stream, Bundle oder Klon
| Befehl | Format |
|---|---|
git fast-export | Lesbarer Textstream |
git bundle | Binäres Pack in einer Datei |
git clone | Ein vollständiges Repository |
Beispiele
Ein Branch
git fast-export main > main.fiDie Historie von main als Text.
Alles
git fast-export --all > repo.fiJeder Branch und jeder Tag.
Ein Repository kopieren
git fast-export --all | (cd ../copy && git fast-import)Die Historie anderswo neu aufbauen.
Workflow-Beispiele
git fast-export --all > repo.fiExportieren
othertool fast-import < repo.fiDie meisten Versionsverwaltungen lesen dieses Format
Fehlerbehebung
Signierte Commits brechen den Export ab
Ursache: Signaturen können im Stream nicht erhalten bleiben
Ergänze --signed-tags=strip (und bei neuerem Git --signed-commits=strip)
Tipps & Stolperfallen
Best Practices
- ✓Für das Umschreiben der Historie ist git filter-repo besser als das Bearbeiten eines Streams von Hand.
Häufige Fehler
- ✗Den Stream für große Umschreibungen von Hand bearbeiten — nutze git filter-repo, das darauf aufbaut.
FAQ
Eine Nummer wie :3, die einen Blob oder Commit im Stream benennt, damit spätere Einträge darauf verweisen können.