OSDN Git Service

Add Git official document to help
[tortoisegit/TortoiseGitJp.git] / doc / source / en / TortoiseGit / git_doc / git-apply.html.xml
1 <?xml version="1.0" encoding="UTF-8"?>\r
2 <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">\r
3 \r
4 <article lang="en" id="git-apply(1)">\r
5 <articleinfo>\r
6     <title>git-apply(1)</title>\r
7         <indexterm>\r
8                 <primary>git-apply(1)</primary>\r
9         </indexterm>\r
10 </articleinfo>\r
11 <simplesect id="_name">\r
12 <title>NAME</title>\r
13 <simpara>git-apply - Apply a patch on a git index file and a working tree</simpara>\r
14 </simplesect>\r
15 <simplesect id="_synopsis">\r
16 <title>SYNOPSIS</title>\r
17 <blockquote>\r
18 <literallayout><emphasis>git apply</emphasis> [--stat] [--numstat] [--summary] [--check] [--index]\r
19           [--apply] [--no-add] [--build-fake-ancestor=&lt;file&gt;] [-R | --reverse]\r
20           [--allow-binary-replacement | --binary] [--reject] [-z]\r
21           [-pNUM] [-CNUM] [--inaccurate-eof] [--recount] [--cached]\r
22           [--whitespace=&lt;nowarn|warn|fix|error|error-all&gt;]\r
23           [--exclude=PATH] [--include=PATH] [--directory=&lt;root&gt;]\r
24           [--verbose] [&lt;patch&gt;&#8230;]</literallayout>\r
25 </blockquote>\r
26 </simplesect>\r
27 <simplesect id="_description">\r
28 <title>DESCRIPTION</title>\r
29 <simpara>Reads supplied <emphasis>diff</emphasis> output and applies it on a git index file\r
30 and a work tree.</simpara>\r
31 </simplesect>\r
32 <simplesect id="_options">\r
33 <title>OPTIONS</title>\r
34 <variablelist>\r
35 <varlistentry>\r
36 <term>\r
37 &lt;patch&gt;&#8230;\r
38 </term>\r
39 <listitem>\r
40 <simpara>\r
41         The files to read patch from.  <emphasis>-</emphasis> can be used to read\r
42         from the standard input.\r
43 </simpara>\r
44 </listitem>\r
45 </varlistentry>\r
46 <varlistentry>\r
47 <term>\r
48 --stat\r
49 </term>\r
50 <listitem>\r
51 <simpara>\r
52         Instead of applying the patch, output diffstat for the\r
53         input.  Turns off "apply".\r
54 </simpara>\r
55 </listitem>\r
56 </varlistentry>\r
57 <varlistentry>\r
58 <term>\r
59 --numstat\r
60 </term>\r
61 <listitem>\r
62 <simpara>\r
63         Similar to --stat, but shows number of added and\r
64         deleted lines in decimal notation and pathname without\r
65         abbreviation, to make it more machine friendly.  For\r
66         binary files, outputs two <literal>-</literal> instead of saying\r
67         <literal>0 0</literal>.  Turns off "apply".\r
68 </simpara>\r
69 </listitem>\r
70 </varlistentry>\r
71 <varlistentry>\r
72 <term>\r
73 --summary\r
74 </term>\r
75 <listitem>\r
76 <simpara>\r
77         Instead of applying the patch, output a condensed\r
78         summary of information obtained from git diff extended\r
79         headers, such as creations, renames and mode changes.\r
80         Turns off "apply".\r
81 </simpara>\r
82 </listitem>\r
83 </varlistentry>\r
84 <varlistentry>\r
85 <term>\r
86 --check\r
87 </term>\r
88 <listitem>\r
89 <simpara>\r
90         Instead of applying the patch, see if the patch is\r
91         applicable to the current work tree and/or the index\r
92         file and detects errors.  Turns off "apply".\r
93 </simpara>\r
94 </listitem>\r
95 </varlistentry>\r
96 <varlistentry>\r
97 <term>\r
98 --index\r
99 </term>\r
100 <listitem>\r
101 <simpara>\r
102         When --check is in effect, or when applying the patch\r
103         (which is the default when none of the options that\r
104         disables it is in effect), make sure the patch is\r
105         applicable to what the current index file records.  If\r
106         the file to be patched in the work tree is not\r
107         up-to-date, it is flagged as an error.  This flag also\r
108         causes the index file to be updated.\r
109 </simpara>\r
110 </listitem>\r
111 </varlistentry>\r
112 <varlistentry>\r
113 <term>\r
114 --cached\r
115 </term>\r
116 <listitem>\r
117 <simpara>\r
118         Apply a patch without touching the working tree. Instead, take the\r
119         cached data, apply the patch, and store the result in the index,\r
120         without using the working tree. This implies <emphasis>--index</emphasis>.\r
121 </simpara>\r
122 </listitem>\r
123 </varlistentry>\r
124 <varlistentry>\r
125 <term>\r
126 --build-fake-ancestor=&lt;file&gt;\r
127 </term>\r
128 <listitem>\r
129 <simpara>\r
130         Newer <emphasis>git-diff</emphasis> output has embedded <emphasis>index information</emphasis>\r
131         for each blob to help identify the original version that\r
132         the patch applies to.  When this flag is given, and if\r
133         the original versions of the blobs is available locally,\r
134         builds a temporary index containing those blobs.\r
135 </simpara>\r
136 <simpara>When a pure mode change is encountered (which has no index information),\r
137 the information is read from the current index instead.</simpara>\r
138 </listitem>\r
139 </varlistentry>\r
140 <varlistentry>\r
141 <term>\r
142 -R\r
143 </term>\r
144 <term>\r
145 --reverse\r
146 </term>\r
147 <listitem>\r
148 <simpara>\r
149         Apply the patch in reverse.\r
150 </simpara>\r
151 </listitem>\r
152 </varlistentry>\r
153 <varlistentry>\r
154 <term>\r
155 --reject\r
156 </term>\r
157 <listitem>\r
158 <simpara>\r
159         For atomicity, <emphasis>git-apply</emphasis> by default fails the whole patch and\r
160         does not touch the working tree when some of the hunks\r
161         do not apply.  This option makes it apply\r
162         the parts of the patch that are applicable, and leave the\r
163         rejected hunks in corresponding *.rej files.\r
164 </simpara>\r
165 </listitem>\r
166 </varlistentry>\r
167 <varlistentry>\r
168 <term>\r
169 -z\r
170 </term>\r
171 <listitem>\r
172 <simpara>\r
173         When showing the index information, do not munge paths,\r
174         but use NUL terminated machine readable format.  Without\r
175         this flag, the pathnames output will have TAB, LF, and\r
176         backslash characters replaced with <literal>\t</literal>, <literal>\n</literal>, and <literal>\\</literal>,\r
177         respectively.\r
178 </simpara>\r
179 </listitem>\r
180 </varlistentry>\r
181 <varlistentry>\r
182 <term>\r
183 -p&lt;n&gt;\r
184 </term>\r
185 <listitem>\r
186 <simpara>\r
187         Remove &lt;n&gt; leading slashes from traditional diff paths. The\r
188         default is 1.\r
189 </simpara>\r
190 </listitem>\r
191 </varlistentry>\r
192 <varlistentry>\r
193 <term>\r
194 -C&lt;n&gt;\r
195 </term>\r
196 <listitem>\r
197 <simpara>\r
198         Ensure at least &lt;n&gt; lines of surrounding context match before\r
199         and after each change.  When fewer lines of surrounding\r
200         context exist they all must match.  By default no context is\r
201         ever ignored.\r
202 </simpara>\r
203 </listitem>\r
204 </varlistentry>\r
205 <varlistentry>\r
206 <term>\r
207 --unidiff-zero\r
208 </term>\r
209 <listitem>\r
210 <simpara>\r
211         By default, <emphasis>git-apply</emphasis> expects that the patch being\r
212         applied is a unified diff with at least one line of context.\r
213         This provides good safety measures, but breaks down when\r
214         applying a diff generated with --unified=0. To bypass these\r
215         checks use <emphasis>--unidiff-zero</emphasis>.\r
216 </simpara>\r
217 <simpara>Note, for the reasons stated above usage of context-free patches are\r
218 discouraged.</simpara>\r
219 </listitem>\r
220 </varlistentry>\r
221 <varlistentry>\r
222 <term>\r
223 --apply\r
224 </term>\r
225 <listitem>\r
226 <simpara>\r
227         If you use any of the options marked "Turns off\r
228         <emphasis>apply</emphasis>" above, <emphasis>git-apply</emphasis> reads and outputs the\r
229         information you asked without actually applying the\r
230         patch.  Give this flag after those flags to also apply\r
231         the patch.\r
232 </simpara>\r
233 </listitem>\r
234 </varlistentry>\r
235 <varlistentry>\r
236 <term>\r
237 --no-add\r
238 </term>\r
239 <listitem>\r
240 <simpara>\r
241         When applying a patch, ignore additions made by the\r
242         patch.  This can be used to extract the common part between\r
243         two files by first running <emphasis>diff</emphasis> on them and applying\r
244         the result with this option, which would apply the\r
245         deletion part but not addition part.\r
246 </simpara>\r
247 </listitem>\r
248 </varlistentry>\r
249 <varlistentry>\r
250 <term>\r
251 --allow-binary-replacement\r
252 </term>\r
253 <term>\r
254 --binary\r
255 </term>\r
256 <listitem>\r
257 <simpara>\r
258         Historically we did not allow binary patch applied\r
259         without an explicit permission from the user, and this\r
260         flag was the way to do so.  Currently we always allow binary\r
261         patch application, so this is a no-op.\r
262 </simpara>\r
263 </listitem>\r
264 </varlistentry>\r
265 <varlistentry>\r
266 <term>\r
267 --exclude=&lt;path-pattern&gt;\r
268 </term>\r
269 <listitem>\r
270 <simpara>\r
271         Don&#8217;t apply changes to files matching the given path pattern. This can\r
272         be useful when importing patchsets, where you want to exclude certain\r
273         files or directories.\r
274 </simpara>\r
275 </listitem>\r
276 </varlistentry>\r
277 <varlistentry>\r
278 <term>\r
279 --include=&lt;path-pattern&gt;\r
280 </term>\r
281 <listitem>\r
282 <simpara>\r
283         Apply changes to files matching the given path pattern. This can\r
284         be useful when importing patchsets, where you want to include certain\r
285         files or directories.\r
286 </simpara>\r
287 <simpara>When --exclude and --include patterns are used, they are examined in the\r
288 order they appear on the command line, and the first match determines if a\r
289 patch to each path is used.  A patch to a path that does not match any\r
290 include/exclude pattern is used by default if there is no include pattern\r
291 on the command line, and ignored if there is any include pattern.</simpara>\r
292 </listitem>\r
293 </varlistentry>\r
294 <varlistentry>\r
295 <term>\r
296 --whitespace=&lt;action&gt;\r
297 </term>\r
298 <listitem>\r
299 <simpara>\r
300         When applying a patch, detect a new or modified line that has\r
301         whitespace errors.  What are considered whitespace errors is\r
302         controlled by <literal>core.whitespace</literal> configuration.  By default,\r
303         trailing whitespaces (including lines that solely consist of\r
304         whitespaces) and a space character that is immediately followed\r
305         by a tab character inside the initial indent of the line are\r
306         considered whitespace errors.\r
307 </simpara>\r
308 <simpara>By default, the command outputs warning messages but applies the patch.\r
309 When <literal>git-apply is used for statistics and not applying a\r
310 patch, it defaults to `nowarn</literal>.</simpara>\r
311 <simpara>You can use different <literal>&lt;action&gt;</literal> to control this\r
312 behavior:</simpara>\r
313 <itemizedlist>\r
314 <listitem>\r
315 <simpara>\r
316 <literal>nowarn</literal> turns off the trailing whitespace warning.\r
317 </simpara>\r
318 </listitem>\r
319 <listitem>\r
320 <simpara>\r
321 <literal>warn</literal> outputs warnings for a few such errors, but applies the\r
322   patch as-is (default).\r
323 </simpara>\r
324 </listitem>\r
325 <listitem>\r
326 <simpara>\r
327 <literal>fix</literal> outputs warnings for a few such errors, and applies the\r
328   patch after fixing them (<literal>strip</literal> is a synonym --- the tool\r
329   used to consider only trailing whitespaces as errors, and the\r
330   fix involved <emphasis>stripping</emphasis> them, but modern gits do more).\r
331 </simpara>\r
332 </listitem>\r
333 <listitem>\r
334 <simpara>\r
335 <literal>error</literal> outputs warnings for a few such errors, and refuses\r
336   to apply the patch.\r
337 </simpara>\r
338 </listitem>\r
339 <listitem>\r
340 <simpara>\r
341 <literal>error-all</literal> is similar to <literal>error</literal> but shows all errors.\r
342 </simpara>\r
343 </listitem>\r
344 </itemizedlist>\r
345 </listitem>\r
346 </varlistentry>\r
347 <varlistentry>\r
348 <term>\r
349 --inaccurate-eof\r
350 </term>\r
351 <listitem>\r
352 <simpara>\r
353         Under certain circumstances, some versions of <emphasis>diff</emphasis> do not correctly\r
354         detect a missing new-line at the end of the file. As a result, patches\r
355         created by such <emphasis>diff</emphasis> programs do not record incomplete lines\r
356         correctly. This option adds support for applying such patches by\r
357         working around this bug.\r
358 </simpara>\r
359 </listitem>\r
360 </varlistentry>\r
361 <varlistentry>\r
362 <term>\r
363 -v\r
364 </term>\r
365 <term>\r
366 --verbose\r
367 </term>\r
368 <listitem>\r
369 <simpara>\r
370         Report progress to stderr. By default, only a message about the\r
371         current patch being applied will be printed. This option will cause\r
372         additional information to be reported.\r
373 </simpara>\r
374 </listitem>\r
375 </varlistentry>\r
376 <varlistentry>\r
377 <term>\r
378 --recount\r
379 </term>\r
380 <listitem>\r
381 <simpara>\r
382         Do not trust the line counts in the hunk headers, but infer them\r
383         by inspecting the patch (e.g. after editing the patch without\r
384         adjusting the hunk headers appropriately).\r
385 </simpara>\r
386 </listitem>\r
387 </varlistentry>\r
388 <varlistentry>\r
389 <term>\r
390 --directory=&lt;root&gt;\r
391 </term>\r
392 <listitem>\r
393 <simpara>\r
394         Prepend &lt;root&gt; to all filenames.  If a "-p" argument was passed, too,\r
395         it is applied before prepending the new root.\r
396 </simpara>\r
397 <simpara>For example, a patch that talks about updating <literal>a/git-gui.sh</literal> to <literal>b/git-gui.sh</literal>\r
398 can be applied to the file in the working tree <literal>modules/git-gui/git-gui.sh</literal> by\r
399 running <literal>git apply --directory=modules/git-gui</literal>.</simpara>\r
400 </listitem>\r
401 </varlistentry>\r
402 </variablelist>\r
403 </simplesect>\r
404 <simplesect id="_configuration">\r
405 <title>Configuration</title>\r
406 <variablelist>\r
407 <varlistentry>\r
408 <term>\r
409 apply.whitespace\r
410 </term>\r
411 <listitem>\r
412 <simpara>\r
413         When no <literal>--whitespace</literal> flag is given from the command\r
414         line, this configuration item is used as the default.\r
415 </simpara>\r
416 </listitem>\r
417 </varlistentry>\r
418 </variablelist>\r
419 </simplesect>\r
420 <simplesect id="_submodules">\r
421 <title>Submodules</title>\r
422 <simpara>If the patch contains any changes to submodules then <emphasis>git-apply</emphasis>\r
423 treats these changes as follows.</simpara>\r
424 <simpara>If --index is specified (explicitly or implicitly), then the submodule\r
425 commits must match the index exactly for the patch to apply.  If any\r
426 of the submodules are checked-out, then these check-outs are completely\r
427 ignored, i.e., they are not required to be up-to-date or clean and they\r
428 are not updated.</simpara>\r
429 <simpara>If --index is not specified, then the submodule commits in the patch\r
430 are ignored and only the absence of presence of the corresponding\r
431 subdirectory is checked and (if possible) updated.</simpara>\r
432 </simplesect>\r
433 <simplesect id="_author">\r
434 <title>Author</title>\r
435 <simpara>Written by Linus Torvalds &lt;<ulink url="mailto:torvalds@osdl.org">torvalds@osdl.org</ulink>&gt;</simpara>\r
436 </simplesect>\r
437 <simplesect id="_documentation">\r
438 <title>Documentation</title>\r
439 <simpara>Documentation by Junio C Hamano</simpara>\r
440 </simplesect>\r
441 <simplesect id="_git">\r
442 <title>GIT</title>\r
443 <simpara>Part of the <xref linkend="git(1)"/> suite</simpara>\r
444 </simplesect>\r
445 </article>\r