path: root/Documentation/git-fast-export.txt
diff options
authorJohannes Schindelin <>2007-12-02 14:14:13 (GMT)
committerJunio C Hamano <>2007-12-03 03:22:12 (GMT)
commitf2dc849e9c5fe363ad089f6c3f2b7b3d79fd6a6f (patch)
tree99e588cda070220d0db437020c08bc17497d1f94 /Documentation/git-fast-export.txt
parentd25430c5f88c7e7b4ce24c1b08e409f4345c4eb9 (diff)
Add 'git fast-export', the sister of 'git fast-import'
This program dumps (parts of) a git repository in the format that fast-import understands. For clarity's sake, it does not use the 'inline' method of specifying blobs in the commits, but builds the blobs before building the commits. Since signed tags' signatures will not necessarily be valid (think transformations after the export, or excluding revisions, changing the history), there are 4 modes to handle them: abort (default), ignore, warn and strip. The latter just turns the tags into unsigned ones. Signed-off-by: Johannes Schindelin <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'Documentation/git-fast-export.txt')
1 files changed, 83 insertions, 0 deletions
diff --git a/Documentation/git-fast-export.txt b/Documentation/git-fast-export.txt
new file mode 100644
index 0000000..073ff7f
--- /dev/null
+++ b/Documentation/git-fast-export.txt
@@ -0,0 +1,83 @@
+git-fast-export - Git data exporter
+'git-fast-export [options]' | 'git-fast-import'
+This program dumps the given revisions in a form suitable to be piped
+into gitlink:git-fast-import[1].
+You can use it as a human readable bundle replacement (see
+gitlink:git-bundle[1]), or as a kind of an interactive
+ Insert 'progress' statements every <n> objects, to be shown by
+ gitlink:git-fast-import[1] during import.
+ Specify how to handle signed tags. Since any transformation
+ after the export can change the tag names (which can also happen
+ when excluding revisions) the signatures will not match.
+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 'ignore', they will be silently ignored (i.e. not exported)
+and with 'warn', they will be exported, but you will see a warning.
+$ 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
+Since gitlink:git-fast-import[1] 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 <>.
+Documentation by Johannes E. Schindelin <>.
+Part of the gitlink:git[7] suite