Home Explore Blog CI



git

3rd chunk of `Documentation/git-archive.adoc`
554a2eb9fa4d245510208c7af2819d5f9fb7ef13fa056cc90000000100000e93
 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

Title: Git Archive Attributes and Examples
Summary
Git archive attributes allow for customizing the archiving process, including settings for permission bits, compression commands, and remote repository configurations, with various examples demonstrating how to create tarballs, zip archives, and other formats using the git archive command with different options and configurations.