Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
-
2.49.0
2025-03-14
- 2.48.1 no changes
-
2.48.0
2025-01-10
- 2.46.2 → 2.47.2 no changes
-
2.46.1
2024-09-13
-
2.46.0
2024-07-29
-
2.45.3
2024-11-26
- 2.45.1 → 2.45.2 no changes
-
2.45.0
2024-04-29
- 2.44.1 → 2.44.3 no changes
-
2.44.0
2024-02-23
- 2.43.1 → 2.43.6 no changes
-
2.43.0
2023-11-20
- 2.42.2 → 2.42.4 no changes
-
2.42.1
2023-11-02
-
2.42.0
2023-08-21
- 2.41.1 → 2.41.3 no changes
-
2.41.0
2023-06-01
- 2.40.1 → 2.40.4 no changes
-
2.40.0
2023-03-12
- 2.37.3 → 2.39.5 no changes
-
2.37.2
2022-08-11
- 2.36.1 → 2.37.1 no changes
-
2.36.0
2022-04-18
- 2.35.1 → 2.35.8 no changes
-
2.35.0
2022-01-24
- 2.34.1 → 2.34.8 no changes
-
2.34.0
2021-11-15
- 2.33.3 → 2.33.8 no changes
-
2.33.2
2022-03-23
-
2.33.1
2021-10-12
-
2.33.0
2021-08-16
- 2.32.1 → 2.32.7 no changes
-
2.32.0
2021-06-06
- 2.31.1 → 2.31.8 no changes
-
2.31.0
2021-03-15
- 2.30.1 → 2.30.9 no changes
-
2.30.0
2020-12-27
- 2.29.1 → 2.29.3 no changes
-
2.29.0
2020-10-19
- 2.28.1 no changes
-
2.28.0
2020-07-27
- 2.27.1 no changes
-
2.27.0
2020-06-01
- 2.26.1 → 2.26.3 no changes
-
2.26.0
2020-03-22
- 2.25.2 → 2.25.5 no changes
-
2.25.1
2020-02-17
-
2.25.0
2020-01-13
- 2.24.1 → 2.24.4 no changes
-
2.24.0
2019-11-04
- 2.22.1 → 2.23.4 no changes
-
2.22.0
2019-06-07
- 2.21.1 → 2.21.4 no changes
-
2.21.0
2019-02-24
- 2.20.1 → 2.20.5 no changes
-
2.20.0
2018-12-09
- 2.19.1 → 2.19.6 no changes
-
2.19.0
2018-09-10
- 2.18.1 → 2.18.5 no changes
-
2.18.0
2018-06-21
- 2.17.1 → 2.17.6 no changes
-
2.17.0
2018-04-02
-
2.16.6
2019-12-06
-
2.15.4
2019-12-06
-
2.14.6
2019-12-06
-
2.13.7
2018-05-22
-
2.12.5
2017-09-22
-
2.11.4
2017-09-22
-
2.10.5
2017-09-22
-
2.9.5
2017-07-30
-
2.8.6
2017-07-30
- 2.7.6 no changes
-
2.6.7
2017-05-05
-
2.5.6
2017-05-05
-
2.4.12
2017-05-05
-
2.3.10
2015-09-28
-
2.2.3
2015-09-04
-
2.1.4
2014-12-17
-
2.0.5
2014-12-17
概述
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 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'、short、medium、full、fuller、reference、email、raw、format:<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>。
占位符是:
-
占位符,可扩展为一个字面字符:
-
影响后面占位符的格式化的占位符:
- %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 See original version for this content. |
GIT
属于 git[1] 文档