Skip to content

fast-import Git Command Guide

The git fast-import command is used to import Git data streams from stdin and write packfiles directly into the current repository. It is the backend for fast Git data importers that reads a mixed command/data stream.

Terminal window
<frontend> | git fast-import [<options>]
OptionDescription
—forceForce update modified branches
—quietDisable statistics output
—statsShow basic statistics (default)
—allow-unsafe-featuresEnable potentially dangerous features
—cat-blob-fd=Write cat-blob responses to file descriptor
—date-format=Specify date format for import
—doneRequire done command at end of stream
—export-marks=Export marks table to file
—import-marks=Import marks from file
—import-marks-if-exists=Import marks if file exists
—[no-]relative-marksUse relative paths for marks files
—active-branches=Max active branches (default 5)
—big-file-threshold=Max size for delta creation
—depth=Max delta depth (default 50)
ParameterDescription
(stdin)Mixed command/data stream from frontend
Terminal window
git fast-export HEAD | git fast-import

Import current repository (creates a copy).

Terminal window
git fast-export --import-marks=marks.txt --export-marks=marks.txt HEAD | git fast-import --import-marks=marks.txt --export-marks=marks.txt

Use marks for incremental bidirectional syncing.

Terminal window
some-frontend | git fast-import --stats

Import with statistics display at completion.

Terminal window
frontend | git fast-import --quiet --cat-blob-fd=3 3>&-

Import quietly with blob queries sent to fd 3.

Terminal window
import-stream | git fast-import --force

Force import even if it would lose commits.

Terminal window
git fast-import --stats < import.stream

Show detailed statistics after import completion.

To import using fast-export, run:

Terminal window
git fast-export HEAD | git fast-import

To handle incremental imports, use marks:

Terminal window
git fast-import --import-marks=marks.txt --export-marks=marks.txt

To see import statistics, use the —stats option:

Terminal window
some-import-stream | git fast-import --stats

To force update branches even if commits would be lost, use:

Terminal window
import-stream | git fast-import --force

To handle blob queries via file descriptor, use —cat-blob-fd:

Terminal window
frontend | git fast-import --cat-blob-fd=3

To customize date formats for import, use —date-format:

Terminal window
import-stream | git fast-import --date-format=raw

Applications of the git fast-import command

Section titled “Applications of the git fast-import command”
  1. Repository migration and conversion from other VCS
  2. Bulk import of historical data from foreign sources
  3. Repository reconstruction after corruption
  4. Automated CI/CD pipeline data import
  5. Creating mirror repositories from export dumps