uTools-Manuals/docs/git/git apply.html
2019-04-08 23:22:26 +08:00

1 line
16 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div class="c-markdown doc-markdown"><div class="doc-postil"><div class="c-markdown"><h2>命名</h2></div></div><div class="doc-postil"><div class="c-markdown"><p>git-apply  - 将补丁应用于文件和/或索引</p></div></div><div class="doc-postil"><div class="c-markdown"><h2>概要</h2></div></div><div class="doc-postil"><div class="c-markdown"><pre class="prism-token token language-javascript">git apply [--stat] [--numstat] [--summary] [--check] [--index] [--3way]          [--apply] [--no-add] [--build-fake-ancestor=&lt;file&gt;] [-R | --reverse]          [--allow-binary-replacement | --binary] [--reject] [-z]          [-p&lt;n&gt;] [-C&lt;n&gt;] [--inaccurate-eof] [--recount] [--cached]          [--ignore-space-change | --ignore-whitespace]          [--whitespace=(nowarn|warn|fix|error|error-all)]          [--exclude=&lt;path&gt;] [--include=&lt;path&gt;] [--directory=&lt;root&gt;]          [--verbose] [--unsafe-paths] [&lt;patch&gt;…]</pre></div></div><div class="doc-postil"><div class="c-markdown"><h2>描述</h2></div></div><div class="doc-postil"><div class="c-markdown"><p>读取提供的差异输出(即“一个补丁”)并将其应用于文件。从存储库中的子目录运行时,目录外的修补路径将被忽略。使用该<code>--index</code>选项,修补程序也应用于索引,并使用该<code>--cached</code>选项将修补程序应用于索引。如果没有这些选项,该命令仅将修补程序应用于文件,并且不要求它们位于 Git 存储库中。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>此命令应用修补程序,但不创建提交。使用 git-am [1] 创建 git-format-patch [1] 生成的补丁和/或通过电子邮件接收的补丁。</p></div></div><div class="doc-postil"><div class="c-markdown"><h2>选项</h2></div></div><div class="doc-postil"><div class="c-markdown"><p>&lt;patch&gt;</p></div></div><div class="doc-postil"><div class="c-markdown"><p>从中读取补丁的文件。<code>-</code>可以用来从标准输入中读取。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--stat</p></div></div><div class="doc-postil"><div class="c-markdown"><p>输出 diffstat 代替输入补丁。关闭“适用”。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--numstat</p></div></div><div class="doc-postil"><div class="c-markdown"><p><code>--stat</code>与之类似,但显示十进制表示法中添加和删除的行数以及不带缩写的路径名,以使其更加机器友好。对于二进制文件,输出两个<code>-</code>而不是说<code>0 0</code>。关闭“适用”。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--summary</p></div></div><div class="doc-postil"><div class="c-markdown"><p>输出从 git diff 扩展头获取的信息(例如创建,重命名和模式更改)的精简摘要,而不是应用该修补程序。关闭“适用”。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--check</p></div></div><div class="doc-postil"><div class="c-markdown"><p>而不是应用修补程序,查看修补程序是否适用于当前工作树和/或索引文件并检测错误。关闭“适用”。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--index</p></div></div><div class="doc-postil"><div class="c-markdown"><p><code>--check</code>生效或应用修补程序(当没有任何禁用修补程序的选项时,这是默认设置)时,请确保修补程序适用于当前索引文件记录的内容。如果要在工作树中修补的文件不是最新的,则会将其标记为错误。该标志也会导致索引文件被更新。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--cached</p></div></div><div class="doc-postil"><div class="c-markdown"><p>在不接触工作树的情况下应用补丁。取而代之的是缓存数据时应用补丁,并将结果存储在索引中,而不使用工作树。这暗示<code>--index</code></p></div></div><div class="doc-postil"><div class="c-markdown"><p>-3   --3way</p></div></div><div class="doc-postil"><div class="c-markdown"><p>如果修补程序不能干净地应用如果修补程序记录它应该应用的斑点的标识则回退到3路合并并且我们在本地可以使用这些斑点可能会在工作树中的文件中留下冲突标记供用户解决。此选项隐含<code>--index</code>期权,并与不兼容<code>--reject</code><code>--cached</code>选项。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--build-fake-ancestor=&lt;file&gt;</p></div></div><div class="doc-postil"><div class="c-markdown"><p>为每个 blob <code>git diff</code>嵌入更新的输出<code>index information</code>以帮助识别该修补程序适用的原始版本。当给出这个标志,并且如果原始版本的 blob 在本地可用,则建立包含这些 blob 的临时索引。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>遇到纯模式更改(没有索引信息)时,将从当前索引读取信息。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>-R   --reverse</p></div></div><div class="doc-postil"><div class="c-markdown"><p>反向应用补丁。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--reject</p></div></div><div class="doc-postil"><div class="c-markdown"><p>对于原子性,<code>git apply</code>默认情况下会失败整个修补程序,并且在某些区块不适用时不会触及工作树。该选项使它应用可用的补丁部分,并将被拒绝的宏保留在对应的 * .rej 文件中。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>-z</p></div></div><div class="doc-postil"><div class="c-markdown"><p><code>--numstat</code>给出时,请勿使用路径名,但使用 NUL 终止的机器可读格式。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>如果没有这个选项,带有“不寻常”字符的路径名将按照配置变量的说明引用<code>core.quotePath</code>(请参阅 git-config [1] )。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>-p&lt;n&gt;</p></div></div><div class="doc-postil"><div class="c-markdown"><p>从传统差异路径中删除 &lt;n&gt; 引导斜杠。默认值是1。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>-C&lt;n&gt;</p></div></div><div class="doc-postil"><div class="c-markdown"><p>确保每次更改之前和之后至少有 &lt;n&gt; 行周围环境匹配。当存在较少的周围环境线时,它们都必须匹配。默认情况下,不会忽略上下文。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--unidiff-zero</p></div></div><div class="doc-postil"><div class="c-markdown"><p>默认情况下,<code>git apply</code>预计所应用的修补程序是至少包含一行上下文的统一差异。这提供了良好的安全措施,但在应用使用生成的差异时发生故障<code>--unified=0</code>。绕过这些检查使用<code>--unidiff-zero</code></p></div></div><div class="doc-postil"><div class="c-markdown"><p>请注意,由于上述原因,不鼓励使用上下文无关的修补程序。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--apply</p></div></div><div class="doc-postil"><div class="c-markdown"><p>如果您使用<code>apply</code>上面标记为“关闭”的任何选项,则<code>git apply</code>读取并输出所请求的信息,而不实际应用该补丁。在这些标志之后给这个标志也应用补丁。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--no-add</p></div></div><div class="doc-postil"><div class="c-markdown"><p>应用修补程序时,忽略修补程序添加的内容。这可以用来提取两个文件之间的公共部分,方法是首先<code>diff</code>在这两个文件上运行,并使用此选项应用结果,该选项将应用删除部分,但不应用添加部分。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--allow-binary-replacement   --binary</p></div></div><div class="doc-postil"><div class="c-markdown"><p>从历史上看,我们不允许在未经用户明确许可的情况下应用二进制补丁,并且此标志是实现此目的的方式。目前我们总是允许二进制补丁程序应用程序,所以这是一个无操作。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--exclude=&lt;path-pattern&gt;</p></div></div><div class="doc-postil"><div class="c-markdown"><p>不要将更改应用于与给定路径模式匹配的文件。这在导入补丁集时很有用,您想要排除某些文件或目录。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--include=&lt;path-pattern&gt;</p></div></div><div class="doc-postil"><div class="c-markdown"><p>将更改应用于与给定路径模式匹配的文件。这在导入补丁集时很有用,您想要在其中包含某些文件或目录。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>在使用模式<code>--exclude</code><code>--include</code>模式时,将按照它们在命令行上出现的顺序进行检查,并且第一个匹配将确定是否使用每个路径的修补程序。缺省情况下,如果命令行中没有包含模式,则缺省使用不匹配任何包含/排除模式的路径补丁,如果有任何包含模式则忽略该补丁。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--ignore-space-change   --ignore-whitespace</p></div></div><div class="doc-postil"><div class="c-markdown"><p>应用修补程序时,如果需要,请忽略上下文行中空白的更改。上下文行将保留它们的空白,并且不管<code>--whitespace</code>选项的值如何,它们都不会进行空白修复。虽然新的线路仍然是固定的。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--whitespace=&lt;action&gt;</p></div></div><div class="doc-postil"><div class="c-markdown"><p>应用修补程序时,检测具有空白错误的新行或修改过的行。认为空白错误是由<code>core.whitespace</code>配置控制的。默认情况下,尾随空格(包括单独由空格组成的行)和空格字符(紧跟该行的初始缩进内的制表符后面的空格字符)将被视为空白错误。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>默认情况下,该命令输出警告消息但应用修补程序。当<code>git-apply</code>用于统计而不应用补丁时,它默认为<code>nowarn</code></p></div></div><div class="doc-postil"><div class="c-markdown"><p>您可以使用不同的<code>&lt;action&gt;</code>值来控制此行为:</p></div></div><div class="doc-postil"><div class="c-markdown"><ul class="ul-level-0 list-paddingleft-2" style="margin: 10px 0px 10px 20px;"><li><p><code>nowarn</code> 关闭后面的空格警告。</p></li></ul></div></div><div class="doc-postil"><div class="c-markdown"><ul class="ul-level-0 list-paddingleft-2" style="margin: 10px 0px 10px 20px;"><li><p><code>warn</code> 输出一些此类错误的警告,但按原样应用该补丁(默认)。</p></li></ul></div></div><div class="doc-postil"><div class="c-markdown"><ul class="ul-level-0 list-paddingleft-2" style="margin: 10px 0px 10px 20px;"><li><p><code>fix</code>输出一些此类错误的警告,并在修复它们之后应用修补程序(<code>strip</code>是同义词---该工具仅用于考虑尾部空白字符作为错误,并且修复涉及<code>stripping</code>它们,但现代 Gits 做得更多)。</p></li></ul></div></div><div class="doc-postil"><div class="c-markdown"><ul class="ul-level-0 list-paddingleft-2" style="margin: 10px 0px 10px 20px;"><li><p><code>error</code> 输出一些此类错误的警告,并拒绝应用该修补程序。</p></li></ul></div></div><div class="doc-postil"><div class="c-markdown"><ul class="ul-level-0 list-paddingleft-2" style="margin: 10px 0px 10px 20px;"><li><p><code>error-all</code>类似<code>error</code>但显示所有错误。</p></li></ul></div></div><div class="doc-postil"><div class="c-markdown"><p>--inaccurate-eof</p></div></div><div class="doc-postil"><div class="c-markdown"><p>在某些情况下,某些版本<code>diff</code>不能在文件末尾正确检测到缺失的新行。因此,这些程序创建的补丁<code>diff</code>不会正确记录不完整的行。此选项通过解决此错误来增加对应用此类修补程序的支持。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>-v   --verbose</p></div></div><div class="doc-postil"><div class="c-markdown"><p>将进展报告给 stderr 。默认情况下,只会打印有关当前正在应用的修补程序的消息。该选项会导致报告其他信息。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--recount</p></div></div><div class="doc-postil"><div class="c-markdown"><p>不要相信 hunk headers 中的行数,但通过检查补丁来推断它们(例如,在编辑补丁而不适当调整 hunk headers 之后)。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--directory=&lt;root&gt;</p></div></div><div class="doc-postil"><div class="c-markdown"><p>&lt;root&gt; 加入所有文件名。如果还传递了“-p”参数则在应用新根之前应用该参数。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>例如,谈到更新补丁<code>a/git-gui.sh</code><code>b/git-gui.sh</code>可以应用到文件中的工作树<code>modules/git-gui/git-gui.sh</code>运行<code>git apply --directory=modules/git-gui</code></p></div></div><div class="doc-postil"><div class="c-markdown"><p>--unsafe-paths</p></div></div><div class="doc-postil"><div class="c-markdown"><p>默认情况下,影响工作区域以外的补丁( Git 控制的工作树或当 “git apply” 用作 GNU 补丁的替代品时的当前工作目录)被拒绝为错误(或恶作剧)。</p></div></div><div class="doc-postil"><div class="c-markdown"><p><code>git apply</code>用作“更好的 GNU 补丁”时,用户可以通过<code>--unsafe-paths</code>选项来覆盖此安全检查。此选项在使用<code>--index</code><code>--cached</code>不使用时无效。</p></div></div><div class="doc-postil"><div class="c-markdown"><h2>组态</h2></div></div><div class="doc-postil"><div class="c-markdown"><p>apply.ignoreWhitespace</p></div></div><div class="doc-postil"><div class="c-markdown"><p>设置为<code>change</code>如果您想要默认情况下忽略空白的更改。设置为以下之一从不如果希望空格中的更改变得显着则为false。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>apply.whitespace</p></div></div><div class="doc-postil"><div class="c-markdown"><p>当没有<code>--whitespace</code>从命令行给出标志时,这个配置项被用作默认值。</p></div></div><div class="doc-postil"><div class="c-markdown"><h2>子模块</h2></div></div><div class="doc-postil"><div class="c-markdown"><p>如果修补程序包含对子模块的任何更改,则按<code>git apply</code>如下方式处理这些更改。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>如果<code>--index</code>指定(明确或隐含地),则子模块提交必须完全匹配要应用的修补程序的索引。如果有任何子模块被检出,则这些检出完全被忽略,即它们不需要是最新的或清洁的,并且它们不被更新。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>如果<code>--index</code>未指定,则补丁中的子模块落实将被忽略,只会检查是否存在相应的子目录,并且(如果可能)更新。</p></div></div></div>