'\" t .\" Title: git-archive .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 06/06/2021 .\" Manual: Git Manual .\" Source: Git 2.30.2 .\" Language: English .\" .TH "GIT\-ARCHIVE" "1" "06/06/2021" "Git 2\&.30\&.2" "Git Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" git-archive \- Create an archive of files from a named tree .SH "SYNOPSIS" .sp .nf \fIgit archive\fR [\-\-format=] [\-\-list] [\-\-prefix=/] [] [\-o | \-\-output=] [\-\-worktree\-attributes] [\-\-remote= [\-\-exec=]] [\&...] .fi .sp .SH "DESCRIPTION" .sp Creates an archive of the specified format containing the tree structure for the named tree, and writes it out to the standard output\&. If is specified it is prepended to the filenames in the archive\&. .sp \fIgit archive\fR behaves differently when given a tree ID versus when given a commit ID or tag ID\&. In the first case the current time is used as the modification time of each file in the archive\&. In the latter case 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 \fIgit get\-tar\-commit\-id\fR\&. In ZIP files it is stored as a file comment\&. .SH "OPTIONS" .PP \-\-format= .RS 4 Format of the resulting archive: \fItar\fR or \fIzip\fR\&. 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 \fBtar\fR\&. .RE .PP \-l, \-\-list .RS 4 Show all available formats\&. .RE .PP \-v, \-\-verbose .RS 4 Report progress to stderr\&. .RE .PP \-\-prefix=/ .RS 4 Prepend / to each filename in the archive\&. .RE .PP \-o , \-\-output= .RS 4 Write the archive to instead of stdout\&. .RE .PP \-\-add\-file= .RS 4 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 for \fB\-\-prefix\fR (if any) and the basename of \&. .RE .PP \-\-worktree\-attributes .RS 4 Look for attributes in \&.gitattributes files in the working tree as well (see the section called \(lqATTRIBUTES\(rq)\&. .RE .PP .RS 4 This can be any options that the archiver backend understands\&. See next section\&. .RE .PP \-\-remote= .RS 4 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 \fB\fR\&. See \fBgit-upload-archive\fR(1) for details\&. .RE .PP \-\-exec= .RS 4 Used with \-\-remote to specify the path to the \fIgit\-upload\-archive\fR on the remote side\&. .RE .PP .RS 4 The tree or commit to produce an archive for\&. .RE .PP .RS 4 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\&. .RE .SH "BACKEND EXTRA OPTIONS" .SS "zip" .PP \-0 .RS 4 Store the files instead of deflating them\&. .RE .PP \-9 .RS 4 Highest and slowest compression level\&. You can specify any number from 1 to 9 to adjust compression speed and ratio\&. .RE .SH "CONFIGURATION" .PP tar\&.umask .RS 4 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\(cqs umask will be used instead\&. See umask(2) for details\&. If \fB\-\-remote\fR is used then only the configuration of the remote repository takes effect\&. .RE .PP tar\&.\&.command .RS 4 This variable specifies a shell command through which the tar output generated by \fBgit archive\fR 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 \fB\fR will be use this format if no other format is given\&. .sp The "tar\&.gz" and "tgz" formats are defined automatically and default to \fBgzip \-cn\fR\&. You may override them with custom commands\&. .RE .PP tar\&.\&.remote .RS 4 If true, enable \fB\fR for use by remote clients via \fBgit-upload-archive\fR(1)\&. Defaults to false for user\-defined formats, but true for the "tar\&.gz" and "tgz" formats\&. .RE .SH "ATTRIBUTES" .PP export\-ignore .RS 4 Files and directories with the attribute export\-ignore won\(cqt be added to archive files\&. See \fBgitattributes\fR(5) for details\&. .RE .PP export\-subst .RS 4 If the attribute export\-subst is set for a file then Git will expand several placeholders when adding this file to an archive\&. See \fBgitattributes\fR(5) for details\&. .RE .sp Note that attributes are by default taken from the \fB\&.gitattributes\fR 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 \fB\&.gitattributes\fR), adjust the checked out \fB\&.gitattributes\fR file as necessary and use \fB\-\-worktree\-attributes\fR option\&. Alternatively you can keep necessary attributes that should apply while archiving any tree in your \fB$GIT_DIR/info/attributes\fR file\&. .SH "EXAMPLES" .PP \fBgit archive \-\-format=tar \-\-prefix=junk/ HEAD | (cd /var/tmp/ && tar xf \-)\fR .RS 4 Create a tar archive that contains the contents of the latest commit on the current branch, and extract it in the \fB/var/tmp/junk\fR directory\&. .RE .PP \fBgit archive \-\-format=tar \-\-prefix=git\-1\&.4\&.0/ v1\&.4\&.0 | gzip >git\-1\&.4\&.0\&.tar\&.gz\fR .RS 4 Create a compressed tarball for v1\&.4\&.0 release\&. .RE .PP \fBgit archive \-\-format=tar\&.gz \-\-prefix=git\-1\&.4\&.0/ v1\&.4\&.0 >git\-1\&.4\&.0\&.tar\&.gz\fR .RS 4 Same as above, but using the builtin tar\&.gz handling\&. .RE .PP \fBgit archive \-\-prefix=git\-1\&.4\&.0/ \-o git\-1\&.4\&.0\&.tar\&.gz v1\&.4\&.0\fR .RS 4 Same as above, but the format is inferred from the output file\&. .RE .PP \fBgit archive \-\-format=tar \-\-prefix=git\-1\&.4\&.0/ v1\&.4\&.0^{tree} | gzip >git\-1\&.4\&.0\&.tar\&.gz\fR .RS 4 Create a compressed tarball for v1\&.4\&.0 release, but without a global extended pax header\&. .RE .PP \fBgit archive \-\-format=zip \-\-prefix=git\-docs/ HEAD:Documentation/ > git\-1\&.4\&.0\-docs\&.zip\fR .RS 4 Put everything in the current head\(cqs Documentation/ directory into \fIgit\-1\&.4\&.0\-docs\&.zip\fR, with the prefix \fIgit\-docs/\fR\&. .RE .PP \fBgit archive \-o latest\&.zip HEAD\fR .RS 4 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\&. .RE .PP \fBgit config tar\&.tar\&.xz\&.command "xz \-c"\fR .RS 4 Configure a "tar\&.xz" format for making LZMA\-compressed tarfiles\&. You can use it specifying \fB\-\-format=tar\&.xz\fR, or by creating an output file like \fB\-o foo\&.tar\&.xz\fR\&. .RE .SH "SEE ALSO" .sp \fBgitattributes\fR(5) .SH "GIT" .sp Part of the \fBgit\fR(1) suite