未验证 提交 074c7201 编写于 作者: 飞龙 提交者: GitHub

Merge pull request #8 from honglyua/update-git-diff

更新git diff中文
......@@ -4,7 +4,7 @@
## 名称
git-diff - 显示提交,提交和工作树之间的更改等
git-diff - 显示提交之前,提交和工作树之间的更改等
## 概要
......@@ -24,47 +24,47 @@ git diff [<options>] --no-index [--] <path> <path>
git diff [<options>] [--] [<path>…​]
```
此表单用于查看您对索引所做的更改(下一次提交的暂存区域)。换句话说,差异就是你_可以_告诉Git进一步添加到索引,但你还没有。您可以使用 [git-add [1]](https://git-scm.com/docs/git-add) 进行这些更改。
此表单用于查看您相对于索引所做的更改(下一次提交的暂存区域)。换句话说,差异就是你 _可以_ 告诉Git即将要添加,但还没有添加到索引的内容。您可以使用 [git-add [1]](https://git-scm.com/docs/git-add) 暂存这些更改。
```
git diff [<options>] --no-index [--] <path> <path>
```
此表单用于比较文件系统上给定的两个路径。在由Git控制的工作树中运行命令时,可以省略`--no-index`选项,并且至少有一个路径指向工作树外部,或者在Git控制的工作树外运行命令
此表单用于比较文件系统上给定的两个路径。在由Git控制的工作树中运行命令时,可以省略`--no-index`选项,并且至少有一个路径指向工作树外部,或者在Git控制的工作树外运行命令。
```
git diff [<options>] --cached [<commit>] [--] [<path>…​]
```
此表单用于查看您为下一次提交相对于命名的&lt; commit&gt;而进行的更改。通常,您希望与最新提交进行比较,因此如果您不提供&lt; commit&gt;,则默认为HEAD。如果HEAD不存在(例如未出生的分支)和&lt; commit&gt;没有给出,它显示了所有阶段性的变化。 --staged是--cached的同义词。
此表单用于查看您为下一次提交而暂存的内容与已经<commit>的内容之间的更改。通常,您希望与最新提交进行比较,因此如果您不提供<commit>,则默认为HEAD。如果HEAD不存在(例如未出生的分支)并且<commit>没有给出,它将显示所有暂存的更改。--staged是--cached的同义词。
```
git diff [<options>] <commit> [--] [<path>…​]
```
此表单用于查看工作树中相对于命名的&lt; commit&gt;的更改。您可以使用HEAD将其与最新提交进行比较,或使用分支名称与其他分支的提示进行比较。
此表单用于查看工作树中相对于已经提交<commit>的更改。您可以使用HEAD将其与最新提交进行比较,或使用分支名称与其他分支的提示进行比较。
```
git diff [<options>] <commit> <commit> [--] [<path>…​]
```
这是为了查看两个任意&lt; commit&gt;之间的变化
这是为了查看两个任意<commit>之间的更改
```
git diff [<options>] <commit>..<commit> [--] [<path>…​]
```
这与之前的表格同义。如果&lt; commit&gt;在一侧被省略,它将具有与使用HEAD相同的效果。
这与之前的表格同义。如果<commit>在一侧被省略,它将具有与使用HEAD相同的效果。
```
git diff [<options>] <commit>...<commit> [--] [<path>…​]
```
此表单用于查看包含和最多第二个&lt; commit&gt;的分支上的更改,从两个&lt; commit&gt;的共同祖先开始。 “git diff A ... B”相当于“git diff $(git merge-base A B)B”。您可以省略&lt; commit&gt;中的任何一个,它与使用HEAD具有相同的效果。
此表单用于查看分支上的更改,从两个<commit>的共同祖先开始,包含第二个<commit>及以上的节点。 “git diff A ... B”相当于“git diff $(git merge-base A B)B”。您可以省略<commit>中的任何一个,它与使用HEAD具有相同的效果。
如果你正在做一些异国情调,应该注意所有的&lt; commit&gt;在上面的描述中,除了使用“..”符号的最后两种形式之外,可以是任何&lt; tree&gt;
如果你正在做一些特殊操作,应该注意在上面描述中的所有<commit>,除了使用“..”符号的最后两种形式之外,可以是任何<tree>
有关拼写&lt; commit&gt;的更完整列表的详细列表,请参阅 [gitrevisions [7]](https://git-scm.com/docs/gitrevisions) 中的“指定修订”部分。然而,“diff”是关于比较两个_端点_,而不是范围和范围符号(“&lt; commit&gt; ..&lt; commit&gt;”和“&lt; commit&gt; ...&lt; commit&gt; “)并不是指 [gitrevisions [7]](https://git-scm.com/docs/gitrevisions) 中”指定范围“部分中定义的范围。
有关拼写<commit>的更完整列表的详细列表,请参阅 [gitrevisions [7]](https://git-scm.com/docs/gitrevisions) 中的“指定修订”部分。然而,“diff”是关于比较两个 _端点_,而不是范围和范围符号(“<commit>..<commit>”和“<commit> ...<commit> “)并不是指 [gitrevisions [7]](https://git-scm.com/docs/gitrevisions) 中”指定范围“部分中定义的范围。
```
git diff [<options>] <blob> <blob>
......@@ -72,7 +72,7 @@ git diff [<options>] --no-index [--] <path> <path>
此表单用于查看两个blob对象的原始内容之间的差异。
## OPTIONS
## 选项
```
-p
......@@ -106,7 +106,26 @@ git diff [<options>] --no-index [--] <path> <path>
--unified=<n>
```
&lt; n&gt;生成差异。上下文而不是通常的三行。意味着`-p`
生成<n>行的上下文差异。而不是通常的三行。意味着`--patch``-p`
```
--output=<file>
```
输出到指定文件汇总,而不是标准输出中。
```
--output-indicator-new=<char>
```
```
--output-indicator-old=<char>
```
```
--output-indicator-context=<char>
```
在生成补丁时,用特殊字符表明哪些行时new,old,context。通常是用 +, - and ' '。
```
--raw
......@@ -142,23 +161,23 @@ git diff [<options>] --no-index [--] <path> <path>
--patience
```
使用“耐心差异”算法生成差异。
使用“patience diff”算法生成差异。
```
--histogram
```
使用“histogram diff”算法生成diff
使用“histogram diff”算法生成差异
```
--anchored=<text>
```
使用“锚定差异”算法生成差异。
使用“anchored diff”算法生成差异。
可以多次指定此选项。
如果源和目标中都存在一行,只存在一次,并以此文本开头,则此算法会尝试阻止它在输出中显示为删除或添加。它在内部使用“耐心差异”算法。
如果源和目标中都存在一行,只存在一次,并以此文本开头,则此算法会尝试阻止它在输出中显示为删除或添加。它在内部使用“patience diff”算法。
```
--diff-algorithm={patience|minimal|histogram|myers}
......@@ -182,13 +201,13 @@ git diff [<options>] --no-index [--] <path> <path>
patience
```
生成补丁时使用“耐心差异”算法。
生成补丁时使用“patience diff”算法。
```
histogram
```
该算法将耐心算法扩展为“支持低发生的共同元素”。
该算法将”patience diff“算法扩展为“支持低发生的共同元素”。
例如,如果将`diff.algorithm`变量配置为非默认值并想要使用默认值,则必须使用`--diff-algorithm=default`选项。
......@@ -196,27 +215,31 @@ git diff [<options>] --no-index [--] <path> <path>
--stat[=<width>[,<name-width>[,<count>]]]
```
生成diffstat。默认情况下,文件名部分将使用必要的空间,图形部分的其余部分将使用。最大宽度默认为终端宽度,如果未连接到终端,则为80列,并且可以被`&lt;width&gt;`覆盖。可以通过在逗号后面给出另一个宽度`&lt;name-width&gt;`来限制文件名部分的宽度。可以使用`--stat-graph-width=&lt;width&gt;`(影响生成统计图的所有命令)或设置`diff.statGraphWidth=&lt;width&gt;`(不影响`git format-patch`)来限制图形部分的宽度。通过给出第三个参数`&lt;count&gt;`,可以将输出限制为第一个`&lt;count&gt;`行,如果有更多,则可以将`...`限制为`...`
生成diffstat。默认情况下,文件名部分,图形部分的其余部分将使用必要的空间。最大宽度默认为终端宽度,如果未连接到终端,则为80列,并且可以被`<width>`覆盖。可以通过在逗号后面给出另一个宽度`<name-width>`来限制文件名部分的宽度。可以使用`--stat-graph-width=<width>`(影响生成统计图的所有命令)或设置`diff.statGraphWidth=<width>`(不影响`git format-patch`)来限制图形部分的宽度。通过给出第三个参数`<count>`,可以将输出限制为第一个`<count>`行,如果有更多,则将以`...`表示
也可以使用`--stat-width=&lt;width&gt;``--stat-name-width=&lt;name-width&gt;``--stat-count=&lt;count&gt;`单独设置这些参数。
也可以使用`--stat-width=<width>``--stat-name-width=<name-width>``--stat-count=<count>`单独设置这些参数。
```
--compact-summary
```
输出扩展标题信息的精简摘要,例如文件创建或删除(“新”或“消失”,如果是符号链接,则可选“+ l”)和模式更改(“+ x”或“-x”用于添加或删除diffstat中的可执行位)。信息放在文件名部分和图形部分之间。意味着`--stat`
输出扩展标题信息的精简摘要,例如文件创建或删除(“新建”或“消失”,如果是符号链接,则可选“+l”)和文件权限更改(“+x”或“-x”用于添加或删除diffstat中的可执行位)。信息放在文件名部分和图形部分之间。意味着`--stat`
```
--numstat
```
`--stat`类似,但显示十进制表示法中添加和删除的行数以及没有缩写的路径名,以使其更加机器友好。对于二进制文件,输出两个`-`而不是`0 0`
`--stat`类似,但是为了更加友好,它用十进制显示添加和删除的行数以及没有缩写的路径名。对于二进制文件,输出两个`-`而不是`0 0`
```
--shortstat
```
仅输出`--stat`格式的最后一行,其中包含已修改文件的总数,以及已添加和已删除行的数量。
仅输出`--stat`格式的最后一行,其中包含已修改文件的总数,以及已添加和已删除行的总数。
```
-X[<param1,param2,…​>]
```
```
--dirstat[=<param1,param2,…​>]
......@@ -228,13 +251,13 @@ git diff [<options>] --no-index [--] <path> <path>
changes
```
通过计算已从源中删除或添加到目标的行来计算dirstat数。这忽略了文件中纯代码移动的数量。换句话说,重新排列文件中的行不会像其他更改那样计算。这是没有给出参数时的默认行为。
通过计算从源文件中删除的行或添加到目标文件的行来计算dirstat数。这忽略了文件中纯代码移动的数量。换句话说,重新排列文件中的行不会像其他更改那样计算。这是没有给出参数时的默认行为。
```
lines
```
通过执行常规的基于行的差异分析来计算dirstat数字,并对移除/添加的行数进行求和。 (对于二进制文件,计算64字节块,因为二进制文件没有自然的线条概念)。这是比`changes`行为更昂贵的`--dirstat`行为,但它确实计算文件中重新排列的行与其他更改一样多。结果输出与您从其他`--*stat`选项获得的输出一致。
通过执行常规的基于行的差异分析来计算dirstat数字,并对移除/添加的行数进行求和。 (对于二进制文件,计算64字节块,因为二进制文件没有自然行的概念)。这是比`changes`行为更昂贵的`--dirstat`行为,但它确实计算文件中重新排列的行与其他更改一样多。结果输出与您从其他`--*stat`选项获得的输出一致。
```
files
......@@ -256,6 +279,18 @@ git diff [<options>] --no-index [--] <path> <path>
示例:以下将计算已更改的文件,同时忽略少于已更改文件总量的10%的目录,并在父目录中累计子目录计数:`--dirstat=files,10,cumulative`
```
--cumulative
```
与--dirstat=cumulative相同
```
--dirstat-by-file[=<param1,param2>…​]
```
与--dirstat=files,param1,param2…相同
```
--summary
```
......@@ -266,13 +301,13 @@ git diff [<options>] --no-index [--] <path> <path>
--patch-with-stat
```
`-p --stat`的同义词
`-p --stat`相同
```
-z
```
当给出`--raw``--numstat``--name-only``--name-status`时,不要使用路径名并使用NUL作为输出字段终止符。
当给出`--raw``--numstat``--name-only``--name-status`时,不使用路径名和NUL作为输出字段终止符。
如果没有此选项,则会引用具有“异常”字符的路径名,如配置变量`core.quotePath`所述(参见 [git-config [1]](https://git-scm.com/docs/git-config) )。
......@@ -292,13 +327,13 @@ git diff [<options>] --no-index [--] <path> <path>
--submodule[=<format>]
```
指定子模块的差异如何显示。指定`--submodule=short`时,使用_短_格式。此格式仅显示范围开头和结尾的提交名称。指定`--submodule``--submodule=log`时,使用 _log_ 格式。此格式列出 [git-submodule [1]](https://git-scm.com/docs/git-submodule) `summary`等范围内的提交。指定`--submodule=diff`时,使用 _diff_ 格式。此格式显示提交范围之间子模块内容更改的内联差异。如果未设置配置选项,则默认为`diff.submodule`或_短_格式。
指定子模块的差异如何显示。当指定`--submodule=short`时,使用 _short_ 格式。此格式仅显示范围开头和结尾的提交名称。当指定`--submodule``--submodule=log`时,使用 _log_ 格式。此格式列出所有commits的提交,类似[git-submodule [1]](https://git-scm.com/docs/git-submodule)`summary`的功能。当指定`--submodule=diff`时,使用 _diff_ 格式。此格式显示提交范围之间子模块内容更改的内联差异。如果未设置配置选项,则默认为`diff.submodule`或 _short_ 格式。
```
--color[=<when>]
```
显示彩色差异。 `--color`(即没有 _=&lt;&gt;_ )与`--color=always`相同时。 _&lt; when&gt;_ 可以是`always``never``auto`之一。可以通过`color.ui``color.diff`配置设置进行更改。
显示彩色差异。 `--color`(即没有 _=<when>_ )与`--color=always`相同时。 _< when>_ 可以是`always``never``auto`之一。可以通过`color.ui``color.diff`配置设置进行更改。
```
--no-color
......@@ -310,7 +345,7 @@ git diff [<options>] --no-index [--] <path> <path>
--color-moved[=<mode>]
```
移动的代码行的颜色不同。可以通过`diff.colorMoved`配置设置进行更改。 &lt;模式&gt;如果没有给出选项,默认为 _no_ ,如果给出没有模式的选项,则默认为 _zebra_ 。模式必须是以下之一:
移动的代码行的颜色不同。可以通过`diff.colorMoved`配置设置进行更改。如果没有给出<mode>选项,则默认值为 _no_ ,如果给出没有模式的选项,则默认为 _zebra_ 。模式必须是以下之一:
```
no
......@@ -334,19 +369,19 @@ git diff [<options>] --no-index [--] <path> <path>
blocks
```
贪婪地检测至少20个字母数字字符的移动文本块。使用 _color.diff。{old,new} Moved_ 颜色绘制检测到的块。相邻的街区不能分开。
贪婪地检测至少20个字母数字字符的移动文本块。使用 _color.diff.{old,new} Moved_ 颜色绘制检测到的块。相邻的块不能分开。
```
zebra
```
_块_模式中检测移动文本块。使用 _color.diff。{old,new} Moved_ 颜色或 _color.diff。{old,new} MovedAlternative_ 绘制块。两种颜色之间的变化表示检测到新的块。
_block_ 模式中检测移动文本块。使用 _color.diff.{old,new} Moved_ 颜色或 _color.diff.{old,new} MovedAlternative_ 绘制块。两种颜色之间的变化表示检测到新的块。
```
dimmed-zebra
```
与 _zebra_ 类似,但执行了移动代码的无趣部分的额外调暗。两个相邻街区的边界线被认为是有趣的,其余的是无趣的。 `dimmed_zebra`是不推荐使用的同义词
与 _zebra_ 类似,但表现为额外调暗了移动代码的无趣部分。两个相邻块的边界线被认为是有趣的,其余的是无趣的。不推荐使用同义词`dimmed_zebra`
```
--no-color-moved
......@@ -400,7 +435,7 @@ git diff [<options>] --no-index [--] <path> <path>
--word-diff[=<mode>]
```
使用&lt; mode&gt;显示单词diff。划定改变的单词。默认情况下,单词由空格分隔;见下面的`--word-diff-regex`&lt;模式&gt;默认为 _plain_ ,必须是以下之一:
使用< mode>显示单词diff。划定改变的单词。默认情况下,单词由空格分隔;见下面的`--word-diff-regex`<mode>默认为 _plain_ ,或者是以下之一:
```
color
......@@ -426,15 +461,15 @@ git diff [<options>] --no-index [--] <path> <path>
再次禁用字差异。
请注意,尽管第一个模式的名称,但如果启用了颜色,则使用颜色突出显示所有模式中已更改的部分。
请注意,如果启用了颜色,在所有模式中将使用第一个模式的名称,颜色突出显示已更改的部分。
```
--word-diff-regex=<regex>
```
使用&lt; regex&gt;决定一个单词是什么,而不是将非空格的运行视为一个单词。除非已经启用,否则还暗示`--word-diff`。
使用<regex>决定一个单词是什么,而不是将非空格的运行视为一个单词。除非已经启用,否则还暗示`--word-diff`。
&lt; regex&gt;的每个非重叠匹配被认为是一个词。这些匹配之间的任何内容都被视为空格并被忽略(!)以查找差异。您可能希望将`|[^[:space:]]`附加到正则表达式,以确保它匹配所有非空白字符。包含换行符的匹配项会在换行符处以静默方式截断(!)。
<regex>的每个非重叠匹配被认为是一个词。这些匹配之间的任何内容都被视为空格并被忽略(!)以查找差异。您可能希望将`|[^[:space:]]`附加到正则表达式,以确保它匹配所有非空白字符。包含换行符的匹配项会在换行符处以静默方式截断(!)。
例如,`--word-diff-regex=.`会将每个字符视为一个单词,并相应地逐个字符地显示差异。
......@@ -444,7 +479,7 @@ git diff [<options>] --no-index [--] <path> <path>
--color-words[=<regex>]
```
相当于`--word-diff=color`加(如果指定了正则表达式)`--word-diff-regex=&lt;regex&gt;`。
相当于`--word-diff=color`加(如果指定了正则表达式)`--word-diff-regex=<regex>`。
```
--no-renames
......@@ -474,13 +509,13 @@ git diff [<options>] --no-index [--] <path> <path>
--binary
```
除`--full-index`外,还可输出可用`git-apply`应用的二进制差异
除`--full-index`外,还可输出可用`git-apply`输出二进制差异,`--patch`也可以
```
--abbrev[=<n>]
```
而不是在diff-raw格式输出和diff-tree标题行中显示完整的40字节十六进制对象名称,而是仅显示部分前缀。这与上面的`--full-index`选项无关,后者控制diff-patch输出格式。可以使用`--abbrev=&lt;n&gt;`指定非默认位数。
不是在diff-raw格式输出和diff-tree标题行中显示完整的40字节十六进制对象名称,而是仅显示部分前缀。这与上面的`--full-index`选项无关,后者控制diff-patch输出格式。可以使用`--abbrev=<n>`指定非默认位数。
```
-B[<n>][/<m>]
......@@ -494,7 +529,7 @@ git diff [<options>] --no-index [--] <path> <path>
它影响了一个更改的方式,相当于一个文件的完全重写,而不是一系列的删除和插入混合在一起,只有几行恰好与文本作为上下文匹配,而是作为单个删除所有旧的后跟一个单个插入所有新内容,数字`m`控制-B选项的这一方面(默认为60%)。 `-B/70%`指定少于30%的原始文本应保留在结果中,以便Git将其视为完全重写(即,否则生成的修补程序将是一系列删除和插入与上下文行混合在一起)。
当与-M一起使用时,完全重写的文件也被视为重命名的源(通常-M只考虑作为重命名源消失的文件),并且数字`n`控制 - 的这方面 - B选项(默认为50%)。 `-B20%`指定添加和删除的更改与文件大小的20%或更多相比,有资格被选为可能的重命名源到另一个文件。
当与-M一起使用时,完全重写的文件也被视为重命名的源(通常-M只考虑作为重命名源消失的文件),并且数字`n`控制B选项的这一方面(默认为50%)。 `-B20%`指定添加和删除的更改与文件大小的20%或更多相比,有资格被选为可能的重命名源到另一个文件。
```
-M[<n>]
......@@ -514,7 +549,7 @@ git diff [<options>] --no-index [--] <path> <path>
--find-copies[=<n>]
```
检测副本以及重命名。另见`--find-copies-harder`。如果指定了`n`,则其含义与`-M&lt;n&gt;`的含义相同。
检测副本以及重命名。另见`--find-copies-harder`。如果指定了`n`,则其含义与`-M<n>`的含义相同。
```
--find-copies-harder
......@@ -530,7 +565,7 @@ git diff [<options>] --no-index [--] <path> <path>
--irreversible-delete
```
省略删除的原像,即只打印标题而不打印原像和`/dev/null`之间的差异。得到的贴片不适用于`patch`或`git apply`;这仅适用于那些希望在更改后专注于审阅文本的人。此外,输出显然缺乏足够的信息来反向应用这样的补丁,甚至手动,因此选项的名称。
省略删除的原像,即只打印标题而不打印原像和`/dev/null`之间的差异。得到的patch不适用于`patch`或`git apply`;这仅适用于那些希望在更改后专注于检视文本的人。此外,输出显然缺乏足够的信息来反向应用这样的补丁,甚至手动,因此选项的名称。
与`-B`一起使用时,也省略删除/创建对的删除部分中的原像。
......@@ -538,7 +573,7 @@ git diff [<options>] --no-index [--] <path> <path>
-l<num>
```
`-M`和`-C`选项需要O(n ^ 2)处理时间,其中n是潜在的重命名/复制目标的数量。如果重命名/复制目标的数量超过指定的数量,此选项可防止重命名/复制检测运行。
`-M`和`-C`选项需要O(n^2)处理时间,其中n是潜在的重命名/复制目标的数量。如果重命名/复制目标的数量超过指定的数量,此选项可防止重命名/复制检测运行。
```
--diff-filter=[(A|C|D|M|R|T|U|X|B)…​[*]]
......@@ -558,15 +593,15 @@ git diff [<options>] --no-index [--] <path> <path>
当你正在寻找一个确切的代码块(比如一个结构体)时,它很有用,并且想要知道该块首次出现以来的历史:迭代地使用该特征将原始图像中的有趣块反馈回`-S`,继续前进,直到你获得该块的第一个版本。
也搜索二进制文件。
可以搜索二进制文件。
```
-G<regex>
```
查找补丁文本包含与&lt; regex&gt;匹配的添加/删除行的差异。
查找补丁文本包含与<regex>匹配的添加/删除行的差异。
为了说明`-S&lt;regex&gt; --pickaxe-regex`和`-G&lt;regex&gt;`之间的区别,请考虑在同一文件中使用以下diff进行提交:
为了说明`-S<regex> --pickaxe-regex`和`-G<regex>`之间的区别,请考虑在同一文件中使用以下diff进行提交:
```
+ return !regexec(regexp, two->ptr, 1, &regmatch, 0);
......@@ -592,13 +627,13 @@ git diff [<options>] --no-index [--] <path> <path>
--pickaxe-all
```
当`-S`或`-G`找到更改时,显示该更改集中的所有更改,而不仅仅是包含&lt; string&gt;中更改的文件。
当`-S`或`-G`找到更改时,显示该更改集中的所有更改,而不仅仅是包含< string>中更改的文件。
```
--pickaxe-regex
```
对待&lt; string&gt;赋予`-S`作为扩展的POSIX正则表达式以匹配。
对待< string>赋予`-S`作为扩展的POSIX正则表达式以匹配。
```
-O<orderfile>
......@@ -606,17 +641,17 @@ git diff [<options>] --no-index [--] <path> <path>
控制文件在输出中的显示顺序。这会覆盖`diff.orderFile`配置变量(参见 [git-config [1]](https://git-scm.com/docs/git-config) )。要取消`diff.orderFile`,请使用`-O/dev/null`。
输出顺序由&lt; orderfile&gt;中的glob模式的顺序决定。首先输出所有与第一个模式匹配的路径名的文件,然后输出所有与第二个模式(但不是第一个模式)匹配的路径名的文件,依此类推。路径名与任何模式都不匹配的所有文件都是最后输出的,就好像文件末尾有一个隐式匹配所有模式一样。如果多个路径名具有相同的等级(它们匹配相同的模式但没有早期模式),则它们相对于彼此的输出顺序是正常顺序。
输出顺序由< orderfile>中的glob模式的顺序决定。首先输出所有与第一个模式匹配的路径名的文件,然后输出所有与第二个模式(但不是第一个模式)匹配的路径名的文件,依此类推。路径名与任何模式都不匹配的所有文件都是最后输出的,就好像文件末尾有一个隐式匹配所有模式一样。如果多个路径名具有相同的等级(它们匹配相同的模式但没有早期模式),则它们相对于彼此的输出顺序是正常顺序。
&lt; orderfile&gt;解析如下:
<orderfile>解析如下:
* 空行被忽略,因此可以将它们用作分隔符以提高可读性。
* 以哈希(“`#`”)开头的行将被忽略,因此它们可用于注释。如果以散列开头,则将反斜杠(“`\`”)添加到模式的开头。
* 以哈希(“`#`”)开头的行将被忽略,因此它们可用于注释。如果以哈希开头,则将反斜杠(“`\`”)添加到模式的开头。
* 每个其他行包含一个模式。
模式与没有FNM_PATHNAME标志的fnmatch(3)使用的模式具有相同的语法和语义,但如果删除任意数量的最终路径名组件与模式匹配,则路径名也匹配模式。例如,模式“`foo*bar`”匹配“`fooasdfbar`”和“`foo/bar/baz/asdf`”而不匹配“`foobarx`”。
模式与没有FNM_PATHNAME标志的fnmatch(3)使用模式具有相同的语法和语义,除匹配的路径名之外,如果删除任意数量的与模式匹配的最终路径名组件。例如,模式“`foo*bar`”匹配“`fooasdfbar`”和“`foo/bar/baz/asdf`”而不匹配“`foobarx`”。
```
-R
......@@ -628,7 +663,7 @@ git diff [<options>] --no-index [--] <path> <path>
--relative[=<path>]
```
从项目的子目录运行时,可以告诉它排除目录外的更改并使用此选项显示相对于它的路径名。当您不在子目录中时(例如,在裸存储库中),您可以通过给出&lt; path&gt;来命名哪个子目录以使输出相对。作为一个论点
从项目的子目录运行时,可以告诉它除目录外的更改并使用此选项显示相对于它的路径名。当您不在子目录中时(例如,在裸存储库中),您可以通过给出<path>作为一个参数来命名哪个子目录以使输出相对
```
-a
......@@ -682,7 +717,7 @@ git diff [<options>] --no-index [--] <path> <path>
--inter-hunk-context=<lines>
```
显示差异之间的上下文,直到指定的行数,从而融合彼此接近的帅哥。如果未设置配置选项,则默认为`diff.interHunkContext`或0。
显示差异之间的上下文,直到指定的行数,从而融合彼此接近的内容。如果未设置配置选项,则默认为`diff.interHunkContext`或0。
```
-W
......@@ -710,7 +745,7 @@ git diff [<options>] --no-index [--] <path> <path>
--ext-diff
```
允许执行外部diff助手。如果使用 [gitattributes [5]](https://git-scm.com/docs/gitattributes) 设置外部差异驱动程序,则需要将此选项与 [git-log [1]](https://git-scm.com/docs/git-log) 和朋友一起使用。
允许执行外部diff助手。如果使用 [gitattributes [5]](https://git-scm.com/docs/gitattributes) 设置外部差异驱动程序,则需要将此选项与 [git-log [1]](https://git-scm.com/docs/git-log) 一起友好使用。
```
--no-ext-diff
......@@ -726,25 +761,25 @@ git diff [<options>] --no-index [--] <path> <path>
--no-textconv
```
在比较二进制文件时允许(或禁止)外部文本转换过滤器运行。有关详细信息,请参阅 [gitattributes [5]](https://git-scm.com/docs/gitattributes) 。由于textconv过滤器通常是单向转换,因此生成的差异适合人类使用,但无法应用。因此,默认情况下,textconv过滤器仅针对 [git-diff [1]](https://git-scm.com/docs/git-diff) 和 [git-log [1]](https://git-scm.com/docs/git-log) 启用,但不适用于 [git-format-patch [ 1]](https://git-scm.com/docs/git-format-patch) 或差异管道命令。
在比较二进制文件时允许(或禁止)外部文本转换过滤器运行。有关详细信息,请参阅 [gitattributes [5]](https://git-scm.com/docs/gitattributes) 。由于textconv过滤器通常是单向转换,因此生成的差异适合人阅读,但无法应用。因此,默认情况下,textconv过滤器仅针对 [git-diff [1]](https://git-scm.com/docs/git-diff) 和 [git-log [1]](https://git-scm.com/docs/git-log) 启用,但不适用于 [git-format-patch [ 1]](https://git-scm.com/docs/git-format-patch) 或差异管道命令。
```
--ignore-submodules[=<when>]
```
忽略差异生成中子模块的更改。 &lt;当&gt;可以是“none”,“untracked”,“dirty”或“all”,这是默认值。使用“none”时,如果子模块包含未跟踪或修改的文件,或者其HEAD与超级项目中记录的提交不同,则可以使用“无”来修改子模块,并可用于覆盖[中 _ignore_ 选项的任何设置git-config [1]](https://git-scm.com/docs/git-config) 或 [gitmodules [5]](https://git-scm.com/docs/gitmodules) 。当使用“未跟踪”时,如果子模块仅包含未跟踪的内容(但仍会扫描修改的内容),则子模块不会被视为脏。使用“脏”忽略对子模块工作树的所有更改,仅显示存储在超级项目中的提交的更改(这是1.7.0之前的行为)。使用“all”隐藏子模块的所有更改。
忽略差异生成中子模块的更改。<when>可以是“none”,“untracked”,“dirty”或“all”,这是默认值。使用“none”时,如果子模块包含未跟踪或修改的文件,或者其HEAD与超级项目中记录的提交不同,则可以使用“none”来修改子模块,并可用于覆盖[git-config [1]](https://git-scm.com/docs/git-config) 或 [gitmodules [5]](https://git-scm.com/docs/gitmodules)中 _ignore_ 选项的任何设置。当使用“untracked”时,如果子模块仅包含未跟踪的内容(但仍会扫描修改的内容),则子模块不会被视为dirty。使用“dirty”忽略对子模块工作树的所有更改,仅显示存储在超级项目中的提交的更改(这是1.7.0之前的行为)。使用“all”隐藏子模块的所有更改。
```
--src-prefix=<prefix>
```
显示给定的源前缀而不是“a /”。
显示给定的源前缀而不是“a/”。
```
--dst-prefix=<prefix>
```
显示给定的目标前缀而不是“b /”。
显示给定的目标前缀而不是“b/”。
```
--no-prefix
......@@ -790,7 +825,7 @@ git diff [<options>] --no-index [--] <path> <path>
<path>…​
```
&lt;路径&gt;参数,当给定时,用于将diff限制为命名路径(您可以为其下的所有文件提供目录名称和获取差异)。
<路径>参数,当给定时,用于将diff限制为命名路径(您可以为其下的所有文件提供目录名称和获取差异)。
## 原始输出格式
......@@ -802,13 +837,13 @@ git diff [<options>] --no-index [--] <path> <path>
git-diff-index <tree-ish>
```
比较&lt; tree-ish&gt;以及文件系统上的文件。
比较<tree-ish>以及文件系统上的文件。
```
git-diff-index --cached <tree-ish>
```
比较&lt; tree-ish&gt;和索引。
比较<tree-ish>和索引。
```
git-diff-tree [-r] <tree-ish-1> <tree-ish-2> [<pattern>…​]
......@@ -841,21 +876,21 @@ unmerged :000000 000000 0000000 0000000 U file6
2. “src”模式;如果创建或未合并,则为000000。
3. 空
3. 空
4. “dst”模式;如果删除或未合并,则为000000。
5. 空
5. 空
6. sha1为“src”; 0 {40}如果创建或未合并
6. sha1为“src”; 如果创建或未合并,则显示0{40}
7. 空
7. 空
8. sha1为“dst”; 0 {40}如果创建,未合并或“查看工作树”
8. sha1为“dst”; 如果创建,未合并或“查看工作树”,则显示0{40}
9. 空
9. 空
10. 状态,后跟可选的“分数”编号。
10. 状态,后跟可选的“数字”编号。
11. 使用`-z`选项时的选项卡或NUL。
......@@ -869,7 +904,7 @@ unmerged :000000 000000 0000000 0000000 U file6
可能的状态字母是:
* :添加文件
* A:添加文件
* C:将文件复制到新文件中
......@@ -887,7 +922,7 @@ unmerged :000000 000000 0000000 0000000 U file6
状态字母C和R后面总是跟一个分数(表示移动或复制的源和目标之间的相似性百分比)。状态字母M之后可以是文件重写的分数(表示不相似的百分比)。
&lt; SHA1&gt;如果文件系统上的文件是新文件并且它与索引不同步,则显示为全0。
<SHA1>如果文件系统上的文件是新文件并且它与索引不同步,则显示为全0。
例:
......@@ -907,7 +942,7 @@ unmerged :000000 000000 0000000 0000000 U file6
3. status是每个父级的连接状态字符
4. 没有可选的“得分”号码
4. 没有可选的“分数”数字
5. 单路径,仅适用于“dst”
......@@ -931,24 +966,24 @@ unmerged :000000 000000 0000000 0000000 U file6
diff --git a/file1 b/file2
```
除非涉及重命名/复制,否则`a/`和`b/`文件名是相同的。特别是,即使是创建或删除,`/dev/null`也是_而不是_来代替`a/`或`b/`文件名。
除非涉及重命名/复制,否则`a/`和`b/`文件名是相同的。特别是,即使是创建或删除,`/dev/null`_不是用来_ 代替`a/`或`b/`的文件名。
当涉及重命名/复制时,`file1`和`file2`分别显示重命名/复制的源文件的名称和重命名/复制的文件的名称。
2. 它后跟一个或多个扩展标题行:
```
old mode &lt;mode&gt;
new mode &lt;mode&gt;
deleted file mode &lt;mode&gt;
new file mode &lt;mode&gt;
copy from &lt;path&gt;
copy to &lt;path&gt;
rename from &lt;path&gt;
rename to &lt;path&gt;
similarity index &lt;number&gt;
dissimilarity index &lt;number&gt;
index &lt;hash&gt;..&lt;hash&gt; &lt;mode&gt;
old mode <mode>
new mode <mode>
deleted file mode <mode>
new file mode <mode>
copy from <path>
copy to <path>
rename from <path>
rename to <path>
similarity index <number>
dissimilarity index <number>
index <hash>..<hash> <mode>
```
文件模式打印为6位八进制数,包括文件类型和文件权限位。
......@@ -957,7 +992,7 @@ unmerged :000000 000000 0000000 0000000 U file6
相似性指数是未更改行的百分比,相异性指数是更改行的百分比。它是一个向下舍入的整数,后跟一个百分号。因此,100%的相似性索引值保留用于两个相等的文件,而100%的相异性意味着旧文件中的任何行都不会成为新文件。
索引行包括更改前后的SHA-1校验和。 &lt;模式&gt;如果文件模式没有改变,则包括在内;否则,单独的行表示旧模式和新模式。
索引行包括更改前后的SHA-1校验和。<mode>如果文件模式没有改变,则包括在内;否则,单独的行表示旧模式和新模式。
3. 具有“异常”字符的路径名被引用,如配置变量`core.quotePath`所述(参见 [git-config [1]](https://git-scm.com/docs/git-config) )。
......@@ -974,7 +1009,7 @@ unmerged :000000 000000 0000000 0000000 U file6
## 组合差异格式
在显示合并时,任何差异生成命令都可以使用`-c`或`--cc`选项生成_组合差异_。当显示与 [git-diff [1]](https://git-scm.com/docs/git-diff) 或 [git-show [1]](https://git-scm.com/docs/git-show) 的合并时,这是默认格式。另请注意,您可以为这些命令中的任何一个提供`-m`选项,以强制使用合并的各个父项生成差异。
在显示合并时,任何差异生成命令都可以使用`-c`或`--cc`选项生成 _组合差异_。当显示与 [git-diff [1]](https://git-scm.com/docs/git-diff) 或 [git-show [1]](https://git-scm.com/docs/git-show) 的合并时,这是默认格式。另请注意,您可以为这些命令中的任何一个提供`-m`选项,以强制使用合并的各个父项生成差异。
_组合diff_ 格式如下所示:
......@@ -1023,13 +1058,13 @@ index fabadb8,cc95eb0..4866510
2. 它后跟一个或多个扩展标题行(此示例显示了与两个父项的合并):
```
index &lt;hash&gt;,&lt;hash&gt;..&lt;hash&gt;
mode &lt;mode&gt;,&lt;mode&gt;..&lt;mode&gt;
new file mode &lt;mode&gt;
deleted file mode &lt;mode&gt;,&lt;mode&gt;
index <hash>,<hash>..<hash>
mode <mode>,<mode>..<mode>
new file mode <mode>
deleted file mode <mode>,<mode>
```
只有当&lt; mode&gt;中的至少一个出现时,`mode &lt;mode&gt;,&lt;mode&gt;..&lt;mode&gt;`行才会出现。与其他人不同。具有关于检测到的内容移动(重命名和复制检测)的信息的扩展标题被设计为与两个&lt; tree-ish&gt;的差异一起工作。并且不会被组合diff格式使用。
只有当<mode>中的至少一个出现时,`mode <mode>,<mode>..<mode>`行才会出现。与其他人不同。具有关于检测到的内容移动(重命名和复制检测)的信息的扩展标题被设计为与两个<tree-ish>的差异一起工作。并且不会被组合diff格式使用。
3. 接下来是两行的文件/文件头
......@@ -1038,17 +1073,17 @@ index fabadb8,cc95eb0..4866510
+++ b/file
```
与传统_统一_ diff格式的双行标题类似,`/dev/null`用于表示创建或删除的文件。
与传统 _统一_ diff格式的双行标题类似,`/dev/null`用于表示创建或删除的文件。
4. 修改了块头格式以防止人们意外地将其馈送到`patch -p1`。创建组合差异格式用于审查合并提交更改,并不适用于应用。此更改类似于扩展_索引_标头中的更改:
4. 修改了块头格式以防止人们意外地将其馈送到`patch -p1`。创建组合差异格式用于审查合并提交更改,并不适用于应用。此更改类似于扩展 _索引_ 标头中的更改:
```
@@@ &lt;from-file-range&gt; &lt;from-file-range&gt; &lt;to-file-range&gt; @@@
@@@ <from-file-range> <from-file-range> <to-file-range> @@@
```
组合diff格式的块头中有(父项数+ 1)`@`个字符。
与传统的_统一_差异格式不同,后者显示两个文件A和B,其中一列具有`-`(减去 - 出现在A中但在B中删除),`+`(加 - 缺少A但是添加到B)或`" "`(空格 - 未更改)前缀,此格式将两个或多个文件file1,file2,...与一个文件X进行比较,并显示X与每个文件N的不同之处。每个fileN的一列被添加到输出行之前,以指示X的行与它的不同之处。
与传统的 _统一_ 差异格式不同,后者显示两个文件A和B,其中一列具有`-`(减去 - 出现在A中但在B中删除),`+`(加 - 缺少A但是添加到B)或`" "`(空格 - 未更改)前缀,此格式将两个或多个文件file1,file2,...与一个文件X进行比较,并显示X与每个文件N的不同之处。每个fileN的一列被添加到输出行之前,以指示X的行与它的不同之处。
N列中的`-`字符表示该行出现在fileN中,但它不会出现在结果中。列N中的`+`字符表示该行出现在结果中,而fileN没有该行(换句话说,从该父项的角度添加了该行)。
......@@ -1077,11 +1112,11 @@ arch/{i386 => x86}/Makefile | 4 +--
1. 添加的行数;
2. 标签;
2. tab;
3. 删除的行数;
4. 标签;
4. tab;
5. pathname(可能带有重命名/复制信息);
......@@ -1098,11 +1133,11 @@ arch/{i386 => x86}/Makefile | 4 +--
1. 添加的行数;
2. 标签;
2. tab;
3. 删除的行数;
4. 标签;
4. tab;
5. NUL(仅在重命名/复制时存在);
......@@ -1110,11 +1145,11 @@ arch/{i386 => x86}/Makefile | 4 +--
7. NUL(仅在重命名/复制时存在);
8. postimage中的路径名(仅在重命名/复制时存在);
8. 新像中的路径名(仅在重命名/复制时存在);
9. 一个NUL。
在重命名的情况下,preimage路径之前的额外`NUL`是允许读取输出的脚本判断正在读取的当前记录是单路径记录还是重命名/复制记录而无需提前读取。读取添加和删除的行后,读取`NUL`将产生路径名,但如果是`NUL`,则记录将显示两个路径。
在重命名的情况下,原像路径之前的额外`NUL`是允许读取输出的脚本判断正在读取的当前记录是单路径记录还是重命名/复制记录而无需提前读取。读取添加和删除的行后,读取`NUL`将产生路径名,但如果是`NUL`,则记录将显示两个路径。
## 例子
......@@ -1144,9 +1179,9 @@ $ git diff HEAD -- ./test (2)
$ git diff HEAD^ HEAD (3)
```
1. 而不是使用当前分支的尖端,与“测试”分支的尖端进行比较。
1. 不是使用当前分支的尖端,而与“测试”分支的尖端进行比较。
2. 而不是与“test”分支的尖端进行比较,与当前分支的尖端进行比较,但将比较限制为文件“test”。
2. 不是与“test”分支的尖端进行比较,而与当前分支的尖端进行比较,但将比较限制为文件“test”。
3. 比较上次提交和最后一次提交之前的版本。
......@@ -1160,11 +1195,11 @@ $ git diff topic..master (2)
$ git diff topic...master (3)
```
1. 主题提示与主分支之间的更改。
1. topic与主分支之间的更改。
2. 与上述相同。
3. 自主题分支启动以来主分支上发生的更改。
3. 自topic分支启动以来主分支上发生的更改。
```
Limiting the diff output
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册