简体中文 ▾
Localized versions of git-diff-tree manual
  1. English
  2. Français
  3. Português (Brasil)
  4. Русский
  5. українська мова
  6. 简体中文
Topics ▾ Latest version ▾ git-diff-tree last updated in 2.52.0
Changes in the git-diff-tree manual
  1. 2.52.0 2025年11月17日
  2. 2.51.2 no changes
  3. 2.51.1 2025年10月15日
  4. 2.51.0 2025年08月18日
  5. 2.49.1 → 2.50.1 no changes
  6. 2.49.0 2025年03月14日
  7. 2.48.1 → 2.48.2 no changes
  8. 2.48.0 2025年01月10日
  9. 2.46.2 → 2.47.3 no changes
  10. 2.46.1 2024年09月13日
  11. 2.46.0 2024年07月29日
  12. 2.45.4 no changes
  13. 2.45.3 2024年11月26日
  14. 2.45.1 → 2.45.2 no changes
  15. 2.45.0 2024年04月29日
  16. 2.44.1 → 2.44.4 no changes
  17. 2.44.0 2024年02月23日
  18. 2.43.1 → 2.43.7 no changes
  19. 2.43.0 2023年11月20日
  20. 2.42.2 → 2.42.4 no changes
  21. 2.42.1 2023年11月02日
  22. 2.42.0 2023年08月21日
  23. 2.41.1 → 2.41.3 no changes
  24. 2.41.0 2023年06月01日
  25. 2.40.1 → 2.40.4 no changes
  26. 2.40.0 2023年03月12日
  27. 2.37.3 → 2.39.5 no changes
  28. 2.37.2 2022年08月11日
  29. 2.36.1 → 2.37.1 no changes
  30. 2.36.0 2022年04月18日
  31. 2.35.1 → 2.35.8 no changes
  32. 2.35.0 2022年01月24日
  33. 2.34.1 → 2.34.8 no changes
  34. 2.34.0 2021年11月15日
  35. 2.33.3 → 2.33.8 no changes
  36. 2.33.2 2022年03月23日
  37. 2.33.1 2021年10月12日
  38. 2.33.0 2021年08月16日
  39. 2.32.1 → 2.32.7 no changes
  40. 2.32.0 2021年06月06日
  41. 2.31.1 → 2.31.8 no changes
  42. 2.31.0 2021年03月15日
  43. 2.30.1 → 2.30.9 no changes
  44. 2.30.0 2020年12月27日
  45. 2.29.1 → 2.29.3 no changes
  46. 2.29.0 2020年10月19日
  47. 2.28.1 no changes
  48. 2.28.0 2020年07月27日
  49. 2.27.1 no changes
  50. 2.27.0 2020年06月01日
  51. 2.26.1 → 2.26.3 no changes
  52. 2.26.0 2020年03月22日
  53. 2.25.2 → 2.25.5 no changes
  54. 2.25.1 2020年02月17日
  55. 2.25.0 2020年01月13日
  56. 2.24.1 → 2.24.4 no changes
  57. 2.24.0 2019年11月04日
  58. 2.22.1 → 2.23.4 no changes
  59. 2.22.0 2019年06月07日
  60. 2.21.1 → 2.21.4 no changes
  61. 2.21.0 2019年02月24日
  62. 2.20.1 → 2.20.5 no changes
  63. 2.20.0 2018年12月09日
  64. 2.19.1 → 2.19.6 no changes
  65. 2.19.0 2018年09月10日
  66. 2.18.1 → 2.18.5 no changes
  67. 2.18.0 2018年06月21日
  68. 2.17.1 → 2.17.6 no changes
  69. 2.17.0 2018年04月02日
  70. 2.16.6 2019年12月06日
  71. 2.15.4 2019年12月06日
  72. 2.14.6 2019年12月06日
  73. 2.13.7 2018年05月22日
  74. 2.12.5 2017年09月22日
  75. 2.11.4 2017年09月22日
  76. 2.10.5 2017年09月22日
  77. 2.9.5 2017年07月30日
  78. 2.8.6 2017年07月30日
  79. 2.7.6 no changes
  80. 2.6.7 2017年05月05日
  81. 2.5.6 2017年05月05日
  82. 2.4.12 2017年05月05日
  83. 2.3.10 2015年09月28日
  84. 2.2.3 2015年09月04日
  85. 2.1.4 2014年12月17日
  86. 2.0.5 2014年12月17日

Check your version of git by running

git --version

名称

git-diff-tree - 比较通过两个树对象找到的 Blob 的内容和模式

概述

git diff-tree [--stdin] [-m] [-s] [-v] [--no-commit-id] [--pretty]
	 [-t] [-r] [-c | --cc] [--combined-all-paths] [--root] [--merge-base]
	 [<common-diff-options>] <目录树对象> [<目录树对象>] [<路径>…​]

描述

比较两个目录树对象中发现的 blob 的内容和模式。

如果只给出一个 <目录树对象>,则会将该提交与其父提交进行比较(见下文的 --stdin)。

请注意,git diff-tree 可以使用封装在提交对象中的树。

选项

Warning

Missing zh_HANS-CN/diff-options.adoc

See original version for this content.

<tree-ish>

树对象的 id。

<路径>…​

如果提供了该选项,则结果仅限于与所提供的路径规格之一相匹配的文件子集。

-r

向子树递归。

-t

展示目录树本身以及子树。 暗指 -r。

--root

当指定了 --root 时,初始提交将显示为一个大的创建事件。这相当于针对 NULL 树的差分。

--merge-base

不要直接比较 <树对象>,而是使用两个 <树对象> 之间的合并基数作为 "before" 边。 必须有两个 <树对象>,而且必须都是提交。

--stdin

如果指定了 --stdin,命令不会从命令行获取 <树对象> 参数。 相反,它会从标准输入中读取包含两个 <目录树>、一个 <提交> 或一个 <提交> 列表的行。 (使用单空格作为分隔符)

当给出两个树时,它会比较第一个目录树和第二个目录树。 如果给出的是单个提交,则会将该提交与其父提交进行比较。 如果给出了其余的提交,则会把它们当作第一个提交的父提交来使用。

比较两棵目录树时,会在差值前打印两棵目录树的 ID(用空格分隔并以换行结束)。 比较提交时,则会打印第一个(或唯一一个)提交的 ID,并以换行结束。

以下标记会进一步影响比较提交(而不是目录树树)时的行为。

-m

默认情况下,git diff-tree --stdin 不会显示合并提交的差异。 有了这个标记,它就会显示该提交与其所有父提交的差异。另请参阅 -c

-s

默认情况下,git diff-tree --stdin 会以机器可读形式(不含 -p)或补丁形式(含 -p)显示差异。 该输出可以被抑制。 只有使用 -v 标志时才有用。

-v

该标记会使 git diff-tree --stdin 在差异之前显示提交信息。

--pretty[=<格式>]
--format=<格式>

以指定的格式打印提交日志的内容,其中'<format>'可以是’oneline'、shortmediumfullfullerreferenceemailrawformat:<string>'和’tformat:<string>'之一。 当<format>'不是上述任何一种,并且其中有'%placeholder’时,它的作用就像给出'--pretty=tformat:<format>'一样。

参见 "PRETTY FORMATS "部分,了解每种格式的一些额外细节。 当'=<格式>'部分被省略时,它默认为’中等'。

注意:你可以在版本库配置中指定默认的漂亮格式(见git-config[1])。

--abbrev-commit

不要显示完整的40字节的十六进制提交对象名称,而是显示一个前缀,以唯一的方式命名该对象。 "--abbrev=<n>"选项可以用来指定前缀的最小长度(如果显示的话,它也会修改diff输出)。

这应该使"--pretty=oneline "对于使用80列终端的人来说更容易阅读。

--no-abbrev-commit

显示完整的40字节十六进制的提交对象名称。这否定了`--abbrev-commit`,无论是明确的还是由其他选项如"--oneline "暗示的。它还覆盖了`log.abbrevCommit`变量。

--oneline

这是"--pretty=oneline --abbrev-commit "的简写,一起使用。

--encoding=<编码>

提交对象会在其编码头中记录日志信息使用的字符编码;该选项可用于告诉命令以用户偏好的编码重新编码提交日志信息。 对于非底层命令,默认编码为 UTF-8。需要注意的是,如果对象声称以 X 编码,而我们以 X 输出,我们将逐字输出该对象;这意味着原始提交中的无效序列可能会被复制到输出中。同样,如果 iconv(3) 无法转换提交,我们也会静静地逐字输出原始对象。

--expand-tabs=<n>
--expand-tabs
--no-expand-tabs

在输出中显示之前,在日志信息中进行标签扩展(用足够的空格替换每个标签,以填充到下一个显示列的 <n> 的倍数)。 --expand-tabs--expand-tabs=8 的简写,--no-expand-tabs--expand-tabs=0 的简写,它禁止标签扩展。

默认情况下,标签会以漂亮的格式展开,将日志信息缩进4个空格(即 "中",这是默认的,"全",和 "更全")。

--notes[=<引用>]

在显示提交日志信息时,显示注释提交的说明(见git-notes[1])。 这是`git log`、git show`和`git whatchanged`命令的默认设置,当命令行中没有给出--pretty`、--format`或--oneline`选项时。

默认情况下,显示的注释来自于`core.notesRef`和`notes.displayRef`变量(或相应的环境覆盖)中列出的注释参考。更多细节见git-config[1]

有了一个可选的 <引用> 参数,就可以使用引用来寻找要显示的笔记。 当引用以 refs/notes/ 开头时,可以指定完整的引用名称;当它以 notes/ 开头时, refs/ ,否则 refs/notes/ 前缀,形成引用的全名。

多个—​音符选项可以组合起来,控制哪些音符被显示。例如。"--notes=foo "将只显示来自 "refs/notes/foo "的注释;"--notes=foo --notes "将同时显示来自 "refs/notes/foo "和默认注释的注释。

--no-notes

不显示注释。这否定了上面的`--notes`选项,因为它重新设置了显示注释的注释列表。 选项按照命令行给出的顺序进行解析,因此,例如"--notes --notes=foo --no-notes --notes=bar "将只显示来自 "refs/notes/bar "的注释。

--show-notes-by-default

显示默认备注,除非给出了显示特定备注的选项。

--show-notes[=<引用>]
--[no-]standard-notes

这些选项已被废弃。请使用上面的 --notes/--no-notes 选项来代替。

--show-signature

通过将签名传递给 gpg --verify 来检查已签名的提交对象的有效性,并显示输出。

--no-commit-id

git diff-tree outputs a line with the commit ID when applicable. This flag suppresses the commit ID output.

-c

这个标记改变了合并提交的显示方式(这意味着它只在命令为一个 <树对象> 或 --stdin 时有用)。 它会同时显示每个父文件与合并结果之间的差异,而不是一次一个地显示父文件与合并结果之间的成对差异(-m 选项就是这么做的)。 此外,它只列出从所有父文件修改过的文件。

--cc

这个标记改变了合并提交补丁的显示方式,与 -c 选项类似。它暗示了 -c-p 选项,并通过省略不感兴趣的 hunk 来进一步压缩补丁输出,这些 hunk 的内容在父节点中只有两种变体,合并结果会选择其中之一而不做修改。 如果所有 hunk 都是无趣的,提交本身和提交日志信息都不会显示,就像其他 "空差异" 情况一样。

--combined-all-paths

该标记会导致合并差异(用于合并提交)列出所有父文件的文件名。 因此,它只有在指定 -c 或 --cc 时才有效,而且可能只有在检测到文件名更改时才有用(即请求重命名或复制检测时)。

--always

即使差异本身为空,也会显示提交本身和提交日志信息。

漂亮的格式

如果提交是一个合并,并且如果pretty-format不是 "oneline"、"email "或 "raw",那么在 "Author: "一行之前会插入一个附加行。 这一行的开头是 "Merge:这一行以 "Merge: "开头,并打印出祖先提交的哈希值,用空格分隔。 请注意,如果你限制了你的历史视图,那么列出的提交不一定是*直接*父级提交的列表:例如,如果你只对与某个目录或文件有关的修改感兴趣。

有几种内置的格式,你可以通过将 pretty.<名称> 配置选项设置为另一种格式名称或 format: 字符串来定义额外的格式,如下所述(见 git-config[1] )。下面是内置格式的细节:

  • oneline

    <哈希值> <标题行>

    这个设计是为了尽可能的紧凑。

  • short

    承诺<hash>
    作者。<作者>的情况
    <标题行>
  • medium

    commit <哈希值>
    Author: <作者>
    Date: <提交日期>
    <标题行>
    <完整的提交信息
  • full

    承诺<hash>
    作者。< Author>
    承诺。<committer>(提交者)。
    <标题行>
    <完整的提交信息
  • fuller

    commit <哈希值>
    Author: <作者>
    AuthorDate: <作者提交日期>
    Commit: <提交者>
    CommitDate: <提交者提交日期>
    <标题行>
    <完整的提交信息
  • ‘引用’

    <缩写哈希值>(<标题行>,<简短的作者日期>)

    这种格式用于在提交信息中引用另一个提交,与`--pretty='format:%C(auto)%h (%s, %ad)'相同。 默认情况下,日期的格式为`--date=short`,除非明确指定其他`--date`选项。 与任何带有格式占位符的`format:一样,其输出不受其他选项的影响,如--decorate`和`--walk-reflogs`。

  • email

    From <哈希> <日期>
    From: <作者>
    Date: <作者提交日期>
    Subject: [PATCH] <标题行>
    <完整的提交信息
  • mboxrd

    和 "email "一样,但提交信息中以 "From "开头的行(前面有零个或多个">")用">"引出,这样就不会被混淆为开始了一个新的提交。

  • raw

    原始 "格式显示的是整个提交对象中存储的内容。 值得注意的是,无论是否使用了 --abbrev 或 --no-abbrev,哈希值都会被完整地显示出来,而’parent’信息会显示真正的父级提交,不会考虑移花接木或历史简化。注意,这种格式会影响提交的显示方式,但不会影响diff的显示方式,比如用`git log --raw`来显示。要获得原始差异格式的完整对象名称,请使用`--no-abbrev`。

  • format:<格式字符串>

    format:<格式字符串 格式允许你指定要显示的信息。它的工作原理有点像 printf 格式,但有一个明显的例外,那就是换行符是 %n 而不是 \n

    例如,format: "The author of %h was %an, %ar%nThe title was >>%s<<%n" 会显示这样的内容:

    fe6e0ee的作者是Junio C Hamano, 23小时前
    标题是 >>t4119: 测试传统diff输入的自动计算-p<n>。

    占位符是:

    • 占位符,可扩展为一个字面字符:

      %n

      换行

      %%

      一个原始的'%'

      %x00

      %x 后跟两个十六进制数字,会被一个包含十六进制数字值的字节替换(在本文档的其余部分,我们称之为 "字面格式化代码")。

    • 影响后面占位符的格式化的占位符:

      %Cred

      切换颜色为红色

      %Cgreen

      切换颜色为绿色

      %Cblue

      将颜色改为蓝色

      %Creset

      重置颜色

      %C(…​)

      颜色规范,如git-config[1]的 "配置文件 "部分中的数值描述。 默认情况下,只有在启用日志输出时才会显示颜色(通过 color.diff, color.ui, 或 --color, 如果我们要去终端,要尊重前者的`auto`设置)。%C(auto,...)`被接受为默认的历史同义词(例如,%C(auto,red))。指定%C(always,…​)将显示颜色,即使没有启用颜色(尽管考虑使用--color=always`来启用整个输出的颜色,包括这个格式和其他任何git可能的颜色)。 auto`单独使用(即%C(auto)`)将在下一个占位符上开启自动着色,直到再次切换颜色。

      %m

      左(<)、右(>)或边界(-)标记

      %w([<w>[,<i1>[,<i2>]]])

      开关包行,就像 git-shortlog[1] 的 -w 选项。

      %<(<N>[,trunc|ltrunc|mtrunc])

      使下一个占位符至少占用 N 列宽,必要时在右侧填充空格。 如果输出超过 N 列,可选择在左侧(ltrunc)..ft、中间(mtrunc)mi..le 或末尾(trunc)rig.. 截断(用省略号 .. )。 注意 1:截断只在 N >= 2 时有效。 注 2:N 和 M(见下文)值周围的空格为可选项。 注 3:表情符号和其他宽字符将占用两个显示列,可能会超出列边界。 注 4:分解字符组合标记可能会在填充边界处错位。

      %<|(<M>)

      使下一个占位符至少显示到第 M 列,必要时在右侧填充空格。 从终端窗口右侧边缘测量的列位置使用负 M 值。

      %>(<N>), %>|(<M>)

      分别类似于 %<( <N> )%<|( <M> ),但在左侧填充空格

      %>>(<N>), %>>|(<M>)

      分别类似于'%>(<N>)%>|(<M>)',只是如果下一个占位符占用的空间比给定的多,并且其左侧有空格,则使用这些空格

      %><(<N>), %><|(<M>)

      分别类似于'%<( <N> )' 和 %<|( <M> ),但两边都有填充(即文本居中)

    • 占位符,扩展到从提交中提取的信息:

      %H

      提交的哈希值

      %h

      简称提交哈希

      %T

      目录树哈希值

      %t

      简称树形哈希

      %P

      父类哈希值

      %p

      缩写的父母哈希值

      %an

      作者名

      %aN

      作者名(关于 .mailmap,请参见 git-shortlog[1]git-blame[1]

      %ae

      作者电子邮箱

      %aE

      作者电子邮件(关于 .mailmap,请参见 git-shortlog[1]git-blame[1]

      %al

      作者电子邮件的本地部分(@ 符号之前的部分)

      %aL

      尊重 .mailmap 作者的本地部分(参见 %al ),参见 git-shortlog[1]git-blame[1])

      %ad

      作者日期(格式尊重—​date=选项

      %aD

      作者日期,RFC2822风格

      %ar

      作者日期,相对

      %at

      作者日期,UNIX时间戳

      %ai

      作者日期,类似ISO 8601的格式

      %aI

      作者日期,严格的ISO 8601格式

      %as

      作者日期,短格式( YYYY-MM-DD )

      %ah

      作者日期,以易读形式呈现(就像 git-rev-list[1]--date=human 选项)

      %cn

      提交者名称

      %cN

      提交者名称(尊重 .mailmap,参见 git-shortlog[1]git-blame[1]

      %ce

      提交者电子邮箱

      %cE

      提交者电子邮箱(尊重 .mailmap,参见 git-shortlog[1]git-blame[1]

      %cl

      提交者电子邮件的本地部分(@ 符号之前的部分)

      %cL

      提交者本地部分(参见'%cl' )尊重 .mailmap, 参见 git-shortlog[1]git-blame[1])

      %cd

      承诺人日期(格式尊重—​date=选项

      %cD

      承诺人日期,RFC2822风格

      %cr

      承诺人日期,相对

      %ct

      提交者日期,UNIX时间戳

      %ci

      承诺人日期,类似ISO 8601的格式

      %cI

      承诺人日期,严格的ISO 8601格式

      %cs

      承诺人日期,短格式( YYYY-MM-DD )

      %ch

      提交者的日期,人类风格(就像 git-rev-list[1]--date=human 选项)

      %d

      ref名称,就像git-log[1]的—​decorate选项。

      %D

      没有"("、")"包装的参考文献名称。

      %(decorate[:<选项>])

      自定义装饰的引用名称。decorate 字符串后面可以是冒号和零个或多个以逗号分隔的选项。选项值可能包含字面格式化代码。由于逗号(%x2C)和结尾括号(%x29)在选项语法中的作用,因此必须使用这些代码。

      • prefix=<值>: 显示在引用名称列表之前。 默认为 " ("。

      • suffix=<值>: 显示在引用名称列表之后。 默认为 ")"。

      • separator=<值>: 显示在引用名称之间。 默认为 ", "。

      • point=<值>: 显示在 HEAD 和其指向的分支(如果有)之间。 默认为 " -> "。

      • tag=<值>: 显示在标记名称之前。默认为 "tag: "。

    例如,制作不带包装或标签注释的装饰,并用空格作为分隔符:

    + %(decorate:prefix=,suffix=,tag=,separator= )

    %(describe[:<选项>])

    人类可读的名字,像git-describe[1];空字符串表示不可描述的提交。 `describe`字符串后面可以有冒号和零个或多个逗号分隔的选项。 当标签同时被添加或删除时,描述可能不一致。

    • tags[=<bool-value>]:不仅考虑带注释的标签,还考虑轻量级标签。

    • abbrev=<数量>:不使用缩写对象名称的默认十六进制位数(根据仓库中对象的数量而变化,默认为 7 位),而是使用 <数量> 的位数,或根据需要的位数来组成唯一的对象名称。

    • match=<pattern>:只考虑与给定的`glob(7)`模式匹配的标签,不包括 "refs/tags/"前缀。

    • exclude=<pattern>:不考虑匹配给定`glob(7)`模式的标签,排除 "refs/tags/"前缀。

    %S

    在命令行中给出的提交名称(如 git log --source),只对 git log 起作用

    %e

    编码方式

    %s

    主题

    %f

    经过消毒的主题行,适合于文件名

    %b

    正文

    %B

    原始体(未包装的主题和体)

    %N

    承诺说明

    %GG

    来自GPG的签名提交的原始验证信息

    %G?

    显示 "G" 代表一个好的(有效的)签名,"B" 代表一个坏的签名,"U" 代表一个有效性未知的好的签名,"X" 代表一个已经过期的好的签名,"Y" 代表一个由过期的钥匙制作的好的签名,"R" 代表一个由撤销的 钥匙制作的好的签名,"E" 如果不能检查签名(如缺少钥匙),"N" 代表没有签名

    %GS

    显示已签名的提交的签名者的名字

    %GK

    显示用于签署已签名的承诺的密钥

    %GF

    显示用于签署已签名提交文件的密钥的指纹

    %GP

    显示主键的指纹,该主键的子键被用来签署一个已签署的提交

    %GT

    显示用于签署已签名的承诺的密钥的信任级别

    %gD

    reflog选择器,例如,refs/stash@{1}`或`refs/stash@{2分钟前};其格式遵循`-g`选项的规则。@'前面的部分是命令行上给出的参考文献名称(所以`git log -g refs/heads/master`会产生`refs/heads/master@{0})。

    %gd

    简化的 reflog 选择器;与 %gD 相同,但 refname 部分被缩短以利于人类阅读(因此 refs/heads/master 变成了 master)。

    %gn

    记录身份名称

    %gN

    引用日志身份名称(尊重 .mailmap,参见 git-shortlog[1]git-blame[1]

    %ge

    重新记录身份邮件

    %gE

    引用日志身份电子邮箱(尊重 .mailmap,参见 git-shortlog[1]git-blame[1]

    %gs

    记录主题

    %(trailers[:<选项>])

    显示由 git-interpret-trailers[1] 解释的正文的为主。trailers 字符串后面可以有冒号和零个或多个逗号分隔的选项。 如果任何选项被多次提供,则最后出现的选项获胜。

    • key=<键>:只显示具有指定密钥的为主。匹配是不分大小写的,后面的冒号是可选的。如果多次给出选项,则显示与任何键匹配的为主行。该选项自动启用 only 选项,使拖车块中的非尾注行被隐藏。如果不希望这样,可以用 only=false 禁用。 例如,%(trailers:key=Reviewed-by) 显示键为 Reviewed-by 的拖车行。

    • only[=<布尔值>] :选择是否应该包括来自尾注块的非尾注行。

    • separator=<sep>: specify the separator inserted between trailer lines. Defaults to a line feed character. The string <sep> may contain the literal formatting codes described above. To use comma as separator one must use %x2C as it would otherwise be parsed as next option. E.g., %(trailers:key=Ticket,separator=%x2C ) shows all trailer lines whose key is "Ticket" separated by a comma and a space.

    • unfold[=<布尔值>]:使它的行为就像 interpret-trailer 的 --unfold 选项被给出一样。例如,`%(trailers:only,unfold=true)`会展开并显示所有的尾注行。

    • keyonly[=<布尔值>]:只显示尾注的关键部分。

    • valueonly[=<布尔值>]:只显示尾注的值部分。

    • key_value_separator=<sep>: specify the separator inserted between the key and value of each trailer. Defaults to ": ". Otherwise it shares the same semantics as separator=<sep> above.

Note
一些占位符可能取决于给修订版遍历引擎的其他选项。例如,%g* reflog选项将插入一个空字符串,除非我们正在遍历reflog条目(例如,通过`git log -g`)。%d`和%D`占位符将使用 "短 "装饰格式,如果`--decorate`没有在命令行上提供。

The boolean options accept an optional value [=<bool-value>]. The values taken by --type=bool git-config[1], like yes and off, are all accepted. Giving a boolean option without =<value> is equivalent to giving it with =true.

如果你在占位符的'%后面加了一个`+(加号),当且仅当占位符扩展为一个非空字符串时,在扩展前会立即插入换行符。

如果你在占位符的'%后面加了一个`-(减号),如果且仅当占位符扩展为空字符串时,紧接着扩展前的所有连续换行将被删除。

如果你在占位符的'%'后面加了一个``(空格),当且仅当占位符扩展到一个非空字符串时,空格就会紧接着插入扩展。

  • t格式:

    tformat: 格式的工作原理与 format: 完全一样,只是它提供了 "终止符" 语义,而不是 "分隔符" 语义。换句话说,每个提交都附加了信息结束符(通常是换行符),而不是在条目之间放置一个分隔符。 这意味着单行格式的最后一个条目将正确地以新行结束,就像 "单行" 格式那样。 比如说:

    $ git log -2 --pretty=format:%h 4da45bef \
     | perl -pe '$_ .= " -- NO NEWLINE\n" unless /\n/'
    4da45be
    7134973 -- NO NEWLINE
    $ git log -2 --pretty=tformat:%h 4da45bef \
     | perl -pe '$_ .= " -- NO NEWLINE\n" unless /\n/'
    4da45be
    7134973

    此外,任何未被识别的字符串,如果其中有 % ,将被解释为前面有 tformat: 。 例如,这两个是等同的:

    $ git log -2 --pretty=tformat:%h 4da45bef
    $ git log -2 --pretty=%h 4da45bef
Warning

Missing zh_HANS-CN/diff-format.adoc

See original version for this content.

GIT

属于 git[1] 文档

AltStyle によって変換されたページ (->オリジナル) /