git-archive(1)
==============

NAME
----
git-archive - Create an archive of files from a named tree


SYNOPSIS
--------
[verse]
'git archive' [--format=<fmt>] [--list] [--prefix=<prefix>/] [<extra>]
	      [-o <file> | --output=<file>] [--worktree-attributes]
	      [--remote=<repo> [--exec=<git-upload-archive>]] <tree-ish>
	      [<path>...]

DESCRIPTION
-----------
Creates an archive of the specified format containing the tree
structure for the named tree, and writes it out to the standard
output.  If <prefix> is specified it is
prepended to the filenames in the archive.

'git archive' behaves differently when given a tree ID as opposed to a
commit ID or tag ID. When a tree ID is provided, the current time is
used as the modification time of each file in the archive. On the
other hand, when a commit ID or tag ID is provided, the commit time as
recorded in the referenced commit object is used instead.
Additionally the commit ID is stored in a global extended pax header
if the tar format is used; it can be extracted using 'git
get-tar-commit-id'. In ZIP files it is stored as a file comment.

OPTIONS
-------

--format=<fmt>::
	Format of the resulting archive. Possible values are `tar`,
	`zip`, `tar.gz`, `tgz`, and any format defined using the
	configuration option `tar.<format>.command`. If `--format`
	is not given, and the output file is specified, the format is
	inferred from the filename if possible (e.g. writing to `foo.zip`
	makes the output to be in the `zip` format). Otherwise the output
	format is `tar`.

-l::
--list::
	Show all available formats.

-v::
--verbose::
	Report progress to stderr.

--prefix=<prefix>/::
	Prepend <prefix>/ to paths in the archive.  Can be repeated; its
	rightmost value is used for all tracked files.  See below which
	value gets used by `--add-file` and `--add-virtual-file`.

-o <file>::
--output=<file>::
	Write the archive to <file> instead of stdout.

--add-file=<file>::
	Add a non-tracked file to the archive.  Can be repeated to add
	multiple files.  The path of the file in the archive is built by
	concatenating the value of the last `--prefix` option (if any)
	before this `--add-file` and the basename of <file>.

--add-virtual-file=<path>:<content>::
	Add the specified contents to the archive.  Can be repeated to add
	multiple files.  The path of the file in the archive is built
	by concatenating the value of the last `--prefix` option (if any)
	before this `--add-virtual-file` and `<path>`.
+
The `<path>` argument can start and end with a literal double-quote
character; the contained file name is interpreted as a C-style string,
i.e. the backslash is interpreted as escape character. The path must
be quoted if it contains a colon, to avoid the colon from being
misinterpreted as the separator between the path and the contents, or
if the path begins or ends with a double-quote character.
+
The file mode is limited to a regular file, and the option may be
subject to platform-dependent command-line limits. For non-trivial
cases, write an untracked file and use `--add-file` instead.

--worktree-attributes::
	Look for attributes in .gitattributes files in the working tree
	as well (see <<ATTRIBUTES>>).

--mtime=<time>::
	Set modification time of archive entries.  Without this option
	the committer time is used if `<tree-ish>` is a commit or tag,
	and the current time if it is a tree.

<extra>::
	This can be any options that the archiver backend understands.
	See next section.

--remote=<repo>::
	Instead of making a tar archive from the local repository,
	retrieve a tar archive from a remote repository. Note that the
	remote repository may place restrictions on which sha1
	expressions may be allowed in `<tree-ish>`. See
	linkgit:git-upload-archive[1] for details.

--exec=<git-upload-archive>::
	Used with --remote to specify the path to the
	'git-upload-archive' on the remote side.

<tree-ish>::
	The tree or commit to produce an archive for.

<path>::
	Without an optional path parameter, all files and subdirectories
	of the current working directory are included in the archive.
	If one or more paths are specified, only these are included.

BACKEND EXTRA OPTIONS
---------------------

zip
~~~
-<digit>::
	Specify compression level.  Larger values allow the command
	to spend more time to compress to smaller size.  Supported
	values are from `-0` (store-only) to `-9` (best ratio).
	Default is `-6` if not given.

tar
~~~
-<number>::
	Specify compression level. The value will be passed to the
	compression command configured in `tar.<format>.command`. See
	manual page of the configured command for the list of supported
	levels and the default level if this option isn't specified.

CONFIGURATION
-------------

tar.umask::
	This variable can be used to restrict the permission bits of
	tar archive entries.  The default is 0002, which turns off the
	world write bit.  The special value "user" indicates that the
	archiving user's umask will be used instead.  See umask(2) for
	details.  If `--remote` is used then only the configuration of
	the remote repository takes effect.

tar.<format>.command::
	This variable specifies a shell command through which the tar
	output generated by `git archive` should be piped. The command
	is executed using the shell with the generated tar file on its
	standard input, and should produce the final output on its
	standard output. Any compression-level options will be passed
	to the command (e.g., `-9`).
+
The `tar.gz` and `tgz` formats are defined automatically and use the
magic command `git archive gzip` by default, which invokes an internal
implementation of gzip.

tar.<format>.remote::
	If true, enable the format for use by remote clients via
	linkgit:git-upload-archive[1]. Defaults to false for
	user-defined formats, but true for the `tar.gz` and `tgz`
	formats.

[[ATTRIBUTES]]
ATTRIBUTES
----------

export-ignore::
	Files and directories with the attribute export-ignore won't be
	added to archive files.  See linkgit:gitattributes[5] for details.

export-subst::
	If the attribute export-subst is set for a file then Git will
	expand several placeholders when adding this file to an archive.
	See linkgit:gitattributes[5] for details.

Note that attributes are by default taken from the `.gitattributes` files
in the tree that is being archived.  If you want to tweak the way the
output is generated after the fact (e.g. you committed without adding an
appropriate export-ignore in its `.gitattributes`), adjust the checked out
`.gitattributes` file as necessary and use `--worktree-attributes`
option.  Alternatively you can keep necessary attributes that should apply
while archiving any tree in your `$GIT_DIR/info/attributes` file.

EXAMPLES
--------
`git archive --format=tar --prefix=junk/ HEAD | (cd /var/tmp/ && tar xf -)`::

	Create a tar archive that contains the contents of the
	latest commit on the current branch, and extract it in the
	`/var/tmp/junk` directory.

`git archive --format=tar --prefix=git-1.4.0/ v1.4.0 | gzip >git-1.4.0.tar.gz`::

	Create a compressed tarball for v1.4.0 release.

`git archive --format=tar.gz --prefix=git-1.4.0/ v1.4.0 >git-1.4.0.tar.gz`::

	Same as above, but using the builtin tar.gz handling.

`git archive --prefix=git-1.4.0/ -o git-1.4.0.tar.gz v1.4.0`::

	Same as above, but the format is inferred from the output file.

`git archive --format=tar --prefix=git-1.4.0/ v1.4.0^{tree} | gzip >git-1.4.0.tar.gz`::

	Create a compressed tarball for v1.4.0 release, but without a
	global extended pax header.

`git archive --format=zip --prefix=git-docs/ HEAD:Documentation/ > git-1.4.0-docs.zip`::

	Put everything in the current head's Documentation/ directory
	into 'git-1.4.0-docs.zip', with the prefix 'git-docs/'.

`git archive -o latest.zip HEAD`::

	Create a Zip archive that contains the contents of the latest
	commit on the current branch. Note that the output format is
	inferred by the extension of the output file.

`git archive -o latest.tar --prefix=build/ --add-file=configure --prefix= HEAD`::

	Creates a tar archive that contains the contents of the latest
	commit on the current branch with no prefix and the untracked
	file 'configure' with the prefix 'build/'.

`git config tar.tar.xz.command "xz -c"`::

	Configure a "tar.xz" format for making LZMA-compressed tarfiles.
	You can use it specifying `--format=tar.xz`, or by creating an
	output file like `-o foo.tar.xz`.


SEE ALSO
--------
linkgit:gitattributes[5]

GIT
---
Part of the linkgit:git[1] suite
