]>
Commit | Line | Data |
---|---|---|
1 | git-archive(1) | |
2 | ============== | |
3 | ||
4 | NAME | |
5 | ---- | |
6 | git-archive - Create an archive of files from a named tree | |
7 | ||
8 | ||
9 | SYNOPSIS | |
10 | -------- | |
11 | [verse] | |
12 | 'git archive' [--format=<fmt>] [--list] [--prefix=<prefix>/] [<extra>] | |
13 | [-o <file> | --output=<file>] [--worktree-attributes] | |
14 | [--remote=<repo> [--exec=<git-upload-archive>]] <tree-ish> | |
15 | [<path>...] | |
16 | ||
17 | DESCRIPTION | |
18 | ----------- | |
19 | Creates an archive of the specified format containing the tree | |
20 | structure for the named tree, and writes it out to the standard | |
21 | output. If <prefix> is specified it is | |
22 | prepended to the filenames in the archive. | |
23 | ||
24 | 'git archive' behaves differently when given a tree ID versus when | |
25 | given a commit ID or tag ID. In the first case the current time is | |
26 | used as the modification time of each file in the archive. In the latter | |
27 | case the commit time as recorded in the referenced commit object is | |
28 | used instead. Additionally the commit ID is stored in a global | |
29 | extended pax header if the tar format is used; it can be extracted | |
30 | using 'git get-tar-commit-id'. In ZIP files it is stored as a file | |
31 | comment. | |
32 | ||
33 | OPTIONS | |
34 | ------- | |
35 | ||
36 | --format=<fmt>:: | |
37 | Format of the resulting archive: 'tar' or 'zip'. If this option | |
38 | is not given, and the output file is specified, the format is | |
39 | inferred from the filename if possible (e.g. writing to "foo.zip" | |
40 | makes the output to be in the zip format). Otherwise the output | |
41 | format is `tar`. | |
42 | ||
43 | -l:: | |
44 | --list:: | |
45 | Show all available formats. | |
46 | ||
47 | -v:: | |
48 | --verbose:: | |
49 | Report progress to stderr. | |
50 | ||
51 | --prefix=<prefix>/:: | |
52 | Prepend <prefix>/ to each filename in the archive. | |
53 | ||
54 | -o <file>:: | |
55 | --output=<file>:: | |
56 | Write the archive to <file> instead of stdout. | |
57 | ||
58 | --worktree-attributes:: | |
59 | Look for attributes in .gitattributes files in the working tree | |
60 | as well (see <<ATTRIBUTES>>). | |
61 | ||
62 | <extra>:: | |
63 | This can be any options that the archiver backend understands. | |
64 | See next section. | |
65 | ||
66 | --remote=<repo>:: | |
67 | Instead of making a tar archive from the local repository, | |
68 | retrieve a tar archive from a remote repository. Note that the | |
69 | remote repository may place restrictions on which sha1 | |
70 | expressions may be allowed in `<tree-ish>`. See | |
71 | linkgit:git-upload-archive[1] for details. | |
72 | ||
73 | --exec=<git-upload-archive>:: | |
74 | Used with --remote to specify the path to the | |
75 | 'git-upload-archive' on the remote side. | |
76 | ||
77 | <tree-ish>:: | |
78 | The tree or commit to produce an archive for. | |
79 | ||
80 | <path>:: | |
81 | Without an optional path parameter, all files and subdirectories | |
82 | of the current working directory are included in the archive. | |
83 | If one or more paths are specified, only these are included. | |
84 | ||
85 | BACKEND EXTRA OPTIONS | |
86 | --------------------- | |
87 | ||
88 | zip | |
89 | ~~~ | |
90 | -0:: | |
91 | Store the files instead of deflating them. | |
92 | -9:: | |
93 | Highest and slowest compression level. You can specify any | |
94 | number from 1 to 9 to adjust compression speed and ratio. | |
95 | ||
96 | ||
97 | CONFIGURATION | |
98 | ------------- | |
99 | ||
100 | tar.umask:: | |
101 | This variable can be used to restrict the permission bits of | |
102 | tar archive entries. The default is 0002, which turns off the | |
103 | world write bit. The special value "user" indicates that the | |
104 | archiving user's umask will be used instead. See umask(2) for | |
105 | details. If `--remote` is used then only the configuration of | |
106 | the remote repository takes effect. | |
107 | ||
108 | tar.<format>.command:: | |
109 | This variable specifies a shell command through which the tar | |
110 | output generated by `git archive` should be piped. The command | |
111 | is executed using the shell with the generated tar file on its | |
112 | standard input, and should produce the final output on its | |
113 | standard output. Any compression-level options will be passed | |
114 | to the command (e.g., "-9"). An output file with the same | |
115 | extension as `<format>` will be use this format if no other | |
116 | format is given. | |
117 | + | |
118 | The "tar.gz" and "tgz" formats are defined automatically and default to | |
119 | `gzip -cn`. You may override them with custom commands. | |
120 | ||
121 | tar.<format>.remote:: | |
122 | If true, enable `<format>` for use by remote clients via | |
123 | linkgit:git-upload-archive[1]. Defaults to false for | |
124 | user-defined formats, but true for the "tar.gz" and "tgz" | |
125 | formats. | |
126 | ||
127 | [[ATTRIBUTES]] | |
128 | ATTRIBUTES | |
129 | ---------- | |
130 | ||
131 | export-ignore:: | |
132 | Files and directories with the attribute export-ignore won't be | |
133 | added to archive files. See linkgit:gitattributes[5] for details. | |
134 | ||
135 | export-subst:: | |
136 | If the attribute export-subst is set for a file then Git will | |
137 | expand several placeholders when adding this file to an archive. | |
138 | See linkgit:gitattributes[5] for details. | |
139 | ||
140 | Note that attributes are by default taken from the `.gitattributes` files | |
141 | in the tree that is being archived. If you want to tweak the way the | |
142 | output is generated after the fact (e.g. you committed without adding an | |
143 | appropriate export-ignore in its `.gitattributes`), adjust the checked out | |
144 | `.gitattributes` file as necessary and use `--worktree-attributes` | |
145 | option. Alternatively you can keep necessary attributes that should apply | |
146 | while archiving any tree in your `$GIT_DIR/info/attributes` file. | |
147 | ||
148 | EXAMPLES | |
149 | -------- | |
150 | `git archive --format=tar --prefix=junk/ HEAD | (cd /var/tmp/ && tar xf -)`:: | |
151 | ||
152 | Create a tar archive that contains the contents of the | |
153 | latest commit on the current branch, and extract it in the | |
154 | `/var/tmp/junk` directory. | |
155 | ||
156 | `git archive --format=tar --prefix=git-1.4.0/ v1.4.0 | gzip >git-1.4.0.tar.gz`:: | |
157 | ||
158 | Create a compressed tarball for v1.4.0 release. | |
159 | ||
160 | `git archive --format=tar.gz --prefix=git-1.4.0/ v1.4.0 >git-1.4.0.tar.gz`:: | |
161 | ||
162 | Same as above, but using the builtin tar.gz handling. | |
163 | ||
164 | `git archive --prefix=git-1.4.0/ -o git-1.4.0.tar.gz v1.4.0`:: | |
165 | ||
166 | Same as above, but the format is inferred from the output file. | |
167 | ||
168 | `git archive --format=tar --prefix=git-1.4.0/ v1.4.0^{tree} | gzip >git-1.4.0.tar.gz`:: | |
169 | ||
170 | Create a compressed tarball for v1.4.0 release, but without a | |
171 | global extended pax header. | |
172 | ||
173 | `git archive --format=zip --prefix=git-docs/ HEAD:Documentation/ > git-1.4.0-docs.zip`:: | |
174 | ||
175 | Put everything in the current head's Documentation/ directory | |
176 | into 'git-1.4.0-docs.zip', with the prefix 'git-docs/'. | |
177 | ||
178 | `git archive -o latest.zip HEAD`:: | |
179 | ||
180 | Create a Zip archive that contains the contents of the latest | |
181 | commit on the current branch. Note that the output format is | |
182 | inferred by the extension of the output file. | |
183 | ||
184 | `git config tar.tar.xz.command "xz -c"`:: | |
185 | ||
186 | Configure a "tar.xz" format for making LZMA-compressed tarfiles. | |
187 | You can use it specifying `--format=tar.xz`, or by creating an | |
188 | output file like `-o foo.tar.xz`. | |
189 | ||
190 | ||
191 | SEE ALSO | |
192 | -------- | |
193 | linkgit:gitattributes[5] | |
194 | ||
195 | GIT | |
196 | --- | |
197 | Part of the linkgit:git[1] suite |