244 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			244 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
| 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`.
 | |
| 
 | |
| -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>` 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.
 | |
| +
 | |
| Note that unlike `--add-file` the path created in the archive is not
 | |
| affected by the `--prefix` option, as a full `<path>` can be given as
 | |
| the value of the option.
 | |
| 
 | |
| --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
 |