git-archive
Create an archive of files from a named tree
TLDR
Create a tar archive from the contents of the current HEAD and print it to standard output
Create a zip archive from the current HEAD and print it to standard output
Same as above, but write the zip archive to file
Create a tar archive from the contents of the latest commit on a specific branch
Create a tar archive from the contents of a specific directory
Prepend a path to each file to archive it inside a specific directory
SYNOPSIS
gitarchive [ --format=<fmt>] [ --list] [ --prefix=<prefix>/] [<extra>] [ -o <file> | --output=<file>] [ --worktree -attributes] [ --remote=<repo> [ --exec=<git -upload -archive>]] <tree -ish> [<path> ...]
DESCRIPTION
OPTIONS
--format=<fmt> Format of the resulting archive: tar or zip . If this option 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 each filename in the archive .
-o <file>, --output=<file> Write the archive to <file> instead of stdout .
--worktree -attributes Look for attributes in .gitattributes files in the working tree as well (see the section called .
<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 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
-0 Store the files instead of deflating them .
-9 Highest and slowest compression level . You can specify any number from 1 to 9 to adjust compression speed and ratio .
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 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 gitarchive 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") . An output file with the same extension as <format> will be use this format if no other format is given .
tar .<format> .remote If true, enable <format> for use by remote clients via git-upload-archive (1). Defaults to false for user -defined formats, but true for the "tar .gz" and "tgz" formats .
ATTRIBUTES
export -ignore Files and directories with the attribute export -ignore won be added to archive files . See 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 gitattributes (5) for details .
EXAMPLES
gitarchive --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 .
gitarchive --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 .
gitarchive --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 .
gitarchive --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 .
gitarchive --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 .
gitarchive --format=zip --prefix=git -docs/ HEAD:Documentation/ > git -1 .4 .0 -docs .zip Put everything in the current head Documentation/ directory into git-1 .4 .0 -docs .zip ,with the prefix git-docs/ .
gitarchive -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 .
gitconfig 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 .
GIT
SEE ALSO
gitattributes(5)