git fast-export [options] | git fast-import
This program dumps the given revisions in a form suitable to be piped into git-fast-import.
You can use it as a human-readable bundle replacement (see git-bundle(1)), or as a kind of an interactive git-filter-branch.
--progress=<n>
--signed-tags=(verbatim|warn|strip|abort)
When asking to abort (which is the default), this program will die when encountering a signed tag. With strip, the tags will be made unsigned, with verbatim, they will be silently exported and with warn, they will be exported, but you will see a warning.
--tag-of-filtered-object=(abort|drop|rewrite)
When asking to abort (which is the default), this program will die when encountering such a tag. With drop it will omit such tags from the output. With rewrite, if the tagged object is a commit, it will rewrite the tag to tag an ancestor commit (via parent rewriting; see git-rev-list(1))
-M, -C
Note that earlier versions of this command did not complain and produced incorrect results if you gave these options.
--export-marks=<file>
--import-marks=<file>
Any commits that have already been marked will not be exported again. If the backend uses a similar --import-marks file, this allows for incremental bidirectional exporting of the repository by keeping the marks the same across runs.
--fake-missing-tagger
--no-data
[git-rev-list-args...]
$ git fast-export --all | (cd /empty/repository && git fast-import)
This will export the whole repository and import it into the existing empty repository. Except for reencoding commits that are not in UTF-8, it would be a one-to-one mirror.
$ git fast-export master~5..master | sed "s|refs/heads/master|refs/heads/other|" | git fast-import
This makes a new branch called other from master~5..master (i.e. if master has linear history, it will take the last 5 commits).
Note that this assumes that none of the blobs and commit messages referenced by that revision range contains the string refs/heads/master.
Since git-fast-import cannot tag trees, you will not be able to export the linux-2.6.git repository completely, as it contains a tag referencing a tree instead of a commit.
Written by Johannes E. Schindelin <m[blue]johannes.schindelin@gmx.dem[][1]>.
Documentation by Johannes E. Schindelin <m[blue]johannes.schindelin@gmx.dem[][1]>.
Part of the git(1) suite