Amazon Best VPN GoSearch

OnWorks 网站图标

git-diff-tree - 云端在线

通过 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器在 OnWorks 免费托管提供商中运行 git-diff-tree

这是 git-diff-tree 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器

程序:

您的姓名


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

概要


混帐 差异树 [--stdin] [-m] [-s] [-v] [--no-commit-id] [--pretty]
[-t] [-r] [-c | --cc] [--root] [ ]
[ ] [ ...]

商品描述


比较通过两个树对象找到的 blob 的内容和模式。

如果只有一个给定,提交与其父母进行比较(见
--下面的标准输入)。

需要注意的是 混帐 差异树 可以使用封装在提交对象中的树。

配置


-p,-u,--补丁
生成补丁(参见生成补丁部分)。

-s,--无补丁
抑制差异输出。 对像 git show 这样显示补丁的命令很有用
默认,或者取消 --patch 的效果。

-U , --统一=
生成差异上下文而不是通常的三行。 意味着 -p。

- 生的
以原始格式生成差异。 这是默认设置。

--补丁与原始
-p --raw 的同义词。

--最小
花额外的时间来确保产生尽可能小的差异。

- 耐心
使用“耐心差异”算法生成差异。

--直方图
使用“直方图差异”算法生成差异。

--diff-algorithm={耐心|最小|直方图|迈尔斯}
选择差异算法。 变体如下:

默认,迈尔斯
基本的贪心差异算法。 目前,这是默认设置。

最小
花额外的时间来确保产生尽可能小的差异。

忍耐
生成补丁时使用“耐心差异”算法。

直方图
该算法将耐心算法扩展为“支持低发生率的常见
元素”。

例如,如果您将 diff.algorithm 变量配置为非默认值并且
想要使用默认的,那么你必须使用 --diff-algorithm=default 选项。

--统计[= [, [, ]]]
生成差异统计。 默认情况下,将根据需要使用尽可能多的空间
文件名部分,其余部分用于图形部分。 最大宽度默认为终端
宽度,如果未连接到终端,则为 80 列,并且可以被覆盖.
文件名部分的宽度可以通过提供另一个宽度来限制
逗号后。 图形部分的宽度可以通过使用来限制
--stat-graph-width= (影响所有生成统计图的命令)或通过
设置 diff.statGraphWidth= (不影响 git 格式补丁)。 通过给出一个
第三个参数,您可以将输出限制为第一个行,跟随
by ...如果还有更多。

这些参数也可以单独设置 --stat-width= ,
--stat-名称-宽度= 和 --stat-count= .

--numstat
与 --stat 类似,但以十进制表示法显示添加和删除的行数和
没有缩写的路径名,以使其对机器更友好。 对于二进制文件,
输出两个 - 而不是说 0 0。

--shortstat
仅输出包含修改总数的 --stat 格式的最后一行
文件,以及添加和删除的行数。

--dirstat[= ]
输出每个子目录的相对变化量分布。 这
--dirstat 的行为可以通过传递一个逗号分隔的列表来自定义
参数。 默认值由 diff.dirstat 配置变量控制
(见 混帐配置(1))。 以下参数可用:

变化
通过计算已从目录中删除的行来计算 dirstat 数
源,或添加到目标。 这忽略了纯代码的数量
文件中的移动。 换句话说,重新排列文件中的行不是
与其他变化一样重要。 这是没有参数时的默认行为
给出。

生产线
通过进行常规的基于行的差异分析来计算 dirstat 数字,以及
对删除/添加的行数求和。 (对于二进制文件,计算 64 字节块
相反,因为二进制文件没有自然的行概念)。 这是一个更
昂贵的 --dirstat 行为比更改行为更昂贵,但它确实很重要
重新排列文件中的行与其他更改一样多。 结果输出是
与您从其他 --*stat 选项中获得的内容一致。


通过计算更改的文件数来计算 dirstat 数。 每一个都变了
文件在 dirstat 分析中同等重要。 这是计算上最便宜的
--dirstat 行为,因为它根本不必查看文件内容。

累积的
也计算父目录的子目录中的更改。 注意
使用累积时,报告的百分比总和可能超过 100%。 这
默认(非累积)行为可以用 noncumulative 指定
参数。


整数参数指定截止百分比(默认为 3%)。 目录
低于此百分比的更改不会显示在输出中。

示例:以下将计算更改的文件,同时忽略较少的目录
超过更改文件总数的 10%,并且累积子目录计数
在父目录中:--dirstat=files,10,cumulative。

- 概括
输出扩展头信息的浓缩摘要,例如创建、重命名
和模式改变。

--补丁与统计
-p --stat 的同义词。

-z
当--raw、--numstat、--name-only 或--name-status 已给出时,不要乱写
路径名并使用 NUL 作为输出字段终止符。

如果没有这个选项,每个路径名输出都会有 TAB、LF、双引号和
反斜杠字符分别替换为 \t、\n、\" 和 \\,以及路径名
如果发生任何这些替换,将用双引号括起来。

--仅名称
仅显示更改文件的名称。

--名称-状态
仅显示更改文件的名称和状态。 参见 --diff-filter 的描述
状态字母含义的选项。

--子模块[= ]
指定如何显示子模块中的差异。 当 --submodule 或 --submodule=log
给定, 日志 格式被使用。 这种格式列出了范围内的提交,如 混帐-
子模块(1) 总结确实。 省略 --submodule 选项或指定
--submodule=short,使用 格式。 这种格式只显示名称
在范围的开头和结尾提交。 可以通过 diff.submodule 进行调整
配置变量。

--颜色[= ]
显示彩色差异。 --color(即没有 =) 与 --color=always 相同。
可以是永远、从不或自动之一。

--无色
关闭彩色差异。 它与 --color=never 相同。

--word-diff[= ]
显示一个单词差异,使用分隔更改的单词。 默认情况下,单词是
以空格分隔; 请参阅下面的 --word-diff-regex。 这默认为 平原,
并且必须是以下之一:

颜色
仅使用颜色突出显示更改的单词。 暗示--颜色。

平原
将单词显示为 [-removed-] 和 {+ added+}。 不尝试逃离
如果分隔符出现在输入中,则输出可能不明确。


使用专门用于脚本使用的基于行的特殊格式。
添加/删除/未更改的运行以通常的统一差异格式打印,
以行首的 +/-/` ` 字符开始并扩展到
行尾。 输入中的换行符由一行中的波浪号 ~ 表示
它自己的。

没有
再次禁用 word diff。

请注意,尽管名称为第一种模式,但颜色用于突出显示已更改的
如果启用,所有模式下的零件。

--word-diff-regex=
用决定一个词是什么,而不是考虑非空白的运行
成为一个词。 也暗示 --word-diff 除非它已经启用。

每个不重叠的匹配被认为是一个词。 之间的任何东西
这些匹配项被视为空格并被忽略(!)以便查找
差异。 您可能希望将 |[^[:space:]] 附加到您的正则表达式以
确保它匹配所有非空白字符。 包含换行符的匹配项是
在换行符处默默地截断(!)。

例如,--word-diff-regex=。 将每个字符视为一个单词,并且,
相应地,逐字显示差异。

也可以通过差异驱动程序或配置选项设置正则表达式,请参阅
git 属性(1)或 混帐配置(1). 给它显式覆盖任何差异驱动程序或
配置设置。 差异驱动程序覆盖配置设置。

--color-words[= ]
等效于 --word-diff=color plus(如果指定了正则表达式)
--word-diff-regex= .

--no-重命名
关闭重命名检测,即使配置文件给出了默认做
所以。

- 查看
如果更改引入空格错误,则发出警告。 什么被认为是空白错误是
由 core.whitespace 配置控制。 默认情况下,尾随空格
(包括仅由空格组成的行)和一个空格字符
在该行的初始缩进中紧跟一个制表符是
考虑空格错误。 如果发现问题,则以非零状态退出。 不是
与 --exit-code 兼容。

--ws-error-highlight=
突出显示由指定的行上的空白错误以指定的颜色
color.diff.whitespace。 是旧的、新的、上下文的逗号分隔列表。 什么时候
未给出此选项,仅突出显示新行中的空白错误。 例如
--ws-error-highlight=new,old 突出显示删除和添加的空白错误
线。 all 可以用作旧的、新的、上下文的简写。

--全索引
显示完整的前图像和后图像 blob,而不是前几个字符
生成补丁格式输出时“索引”行上的对象名称。

--二进制
除了 --full-index 之外,输出一个可以与 git-apply 一起应用的二进制差异。

--缩写[= ]
而不是在 diff-raw 格式输出中显示完整的 40 字节十六进制对象名称
和 diff-tree 标题行,仅显示部分前缀。 这独立于
--full-index 上面的选项,它控制差异补丁输出格式。 非默认
可以使用 --abbrev= 指定位数.

-B[ ][/ ], --break-rewrites[=[ ][/ ]]
将完整的重写更改分解为删除和创建对。 这服务于两个
用途:

它会影响相当于完全重写文件而不是一系列文件的更改方式
删除和插入混合在一起的极少数恰好匹配的行
文本作为上下文,但作为一个单一的删除所有旧的,然后是一个
单次插入所有新内容,数字 m 控制 -B 的这一方面
选项(默认为 60%)。 -B/70% 指定少于原件的 30%
保留在结果中,让 Git 将其视为完全重写(即,否则
结果补丁将是一系列与上下文混合在一起的删除和插入
行)。

与 -M 一起使用时,完全重写的文件也被视为
重命名(通常 -M 只将消失的文件视为重命名的来源),
数字 n 控制 -B 选项的这一方面(默认为 50%)。 -B20%
指定与添加和删除相比的 20% 或更多的更改
文件的大小有资格被选取作为重命名的可能来源
另一个文件。

-M[ ], --find-renames[= ]
检测重命名。 如果指定了 n,则它是相似度指数上的阈值(即
与文件大小相比的添加/删除量)。 例如,-M90% 表示
如果超过 90% 的文件,Git 应该将删除/添加对视为重命名
没有改变。 没有 % 符号,数字将被读作分数,带有
前面的小数点。 即,-M5变为0.5,因此与-M50%相同。
同样,-M05 与-M5% 相同。 要将检测限制为精确重命名,请使用 -M100%。
默认相似度指数为 50%。

-C[ ], --find-copies[= ]
检测副本以及重命名。 另见--find-copies-harder。 如果指定了 n,则它
与 -M 的含义相同.

--查找副本更难
出于性能原因,默认情况下,-C 选项仅在原始文件
在同一个变更集中修改了副本。 此标志使命令检查
未修改的文件作为副本源的候选者。 这是一个非常昂贵的
大项目操作,慎用。 提供多个 -C 选项
具有相同的效果。

-D, --不可逆删除
省略删除的原像,即只打印标题而不打印标题之间的差异
原像和 /dev/null。 生成的补丁不打算与补丁一起应用或
git申请; 这仅适用于只想专注于审查
更改后的文本。 此外,输出显然缺乏足够的信息
反向应用这样的补丁,甚至手动应用,因此该选项的名称。

与 -B 一起使用时,还省略 a 的删除部分中的原像
删除/创建对。

-l
-M 和 -C 选项需要 O(n^2) 处理时间,其中 n 是
潜在的重命名/复制目标。 此选项可防止重命名/复制检测运行
如果重命名/复制目标的数量超过指定的数量。

--diff-filter=[(A|C|D|M|R|T|U|X|B)...[*]]
仅选择添加 (A)、复制 (C)、删除 (D)、修改 (M)、重命名的文件
(R), 改变它们的类型 (即常规文件, 符号链接, 子模块, ...), 是
未合并 (U)、未知 (X) 或配对已损坏 (B)。 任意组合
可以使用的过滤器字符(包括无)。 添加 * (All-or-none) 时
到组合,如果有任何文件匹配其他路径,则选择所有路径
比较标准; 如果没有符合其他条件的文件,则没有
被选中。

-S
查找更改指定字符串出现次数的差异
(即添加/删除)在一个文件中。 供脚本编写者使用。

当您正在寻找确切的代码块(如结构)并且想要
要了解该块自首次出现以来的历史:使用该功能
迭代地将原像中的有趣块送回 -S,然后继续
直到您获得该块的第一个版本。

-G
查找补丁文本包含匹配的添加/删除行的差异.

为了说明 -S 之间的区别--pickaxe-regex 和 -G , 考虑
在同一文件中具有以下差异的提交:

+ return !regexec(regexp, two->ptr, 1, ®match, 0);
...
- hit = !regexec(regexp, mf2.ptr, 1, ®match, 0);

虽然 git log -G"regexec\(regexp" 将显示此提交,但 git log -S"regexec\(regexp"
--pickaxe-regex 不会(因为该字符串的出现次数没有
改变)。

查看 鹤嘴锄 进入 git差异核心(7) 了解更多信息。

--全部镐
当 -S 或 -G 发现更改时,显示该更改集中的所有更改,而不仅仅是
包含更改的文件.

--pickaxe-正则表达式
对待将 -S 作为扩展的 POSIX 正则表达式提供给匹配。

-O
按照指定的顺序输出补丁, 它有一个 shell glob
每行图案。 这会覆盖 diff.orderFile 配置变量(请参阅 混帐-
配置(1))。 要取消 diff.orderFile,请使用 -O/dev/null。

-R
交换两个输入; 也就是说,显示从索引或磁盘文件到树的差异
内容。

--相对[= ]
当从项目的子目录运行时,可以告诉它排除外部的更改
目录并使用此选项显示相对于它的路径名。 当你不在
一个子目录(例如在裸存储库中),您可以命名要创建的子目录
通过给出一个相对于的输出作为论据。

-a,--文本
将所有文件视为文本。

--忽略 eol 处的空间
在 EOL 时忽略空格的变化。

-b,--忽略空格更改
忽略空格量的变化。 这会忽略行尾的空格,并且
认为一个或多个空白字符的所有其他序列是等效的。

-w,--忽略所有空间
比较行时忽略空格。 即使一行有差异,这也会忽略差异
另一行没有的空白。

--忽略空白行
忽略所有行都是空白的更改。

--inter-hunk-context=
显示差异块之间的上下文,最多指定行数,从而
融合彼此接近的帅哥。

-W,--函数上下文
显示整个变化的周围功能。

--退出代码
使用类似的代码使程序退出 差异(1). 也就是说,如果有,它以 1 退出
有差异,0 表示没有差异。

- 安静的
禁用程序的所有输出。 暗示 --exit-code。

--ext 差异
允许执行外部差异帮助程序。 如果您设置外部差异驱动程序
git 属性(5)、你需要使用这个选项 混帐日志(1)和朋友。

--无扩展差异
禁止外部差异驱动程序。

--textconv, --no-textconv
在比较二进制文件时允许(或禁止)运行外部文本转换过滤器
文件。 看 git 属性(5) 详情。 因为 textconv 过滤器通常是一个
单向转换,产生的差异适合人类消费,但不能
被应用。 因此,默认情况下仅启用 textconv 过滤器 混帐-
差异(1)和 混帐日志(1),但不是为了 git-格式补丁(1) 或 diff 管道命令。

--忽略子模块[= ]
忽略差异生成中对子模块的更改。 可以是“无”,
“untracked”、“dirty”或“all”,这是默认值。 使用“无”将考虑
子模块在包含未跟踪或修改的文件或其 HEAD 时被修改
与超级项目中记录的提交不同,可用于覆盖任何
的设置 忽略 选项 混帐配置(1)或 git模块(5). 当“未跟踪”是
当使用的子模块仅包含未跟踪的内容时,它们不被认为是脏的(但是
他们仍然会扫描修改的内容)。 使用“dirty”会忽略对
子模块的工作树,仅对存储在超级项目中的提交进行更改
显示(这是 1.7.0 之前的行为)。 使用“all”隐藏所有更改
子模块。

--src-前缀=
显示给定的源前缀而不是“a/”。

--dst-前缀=
显示给定的目的地前缀而不是“b/”。

--无前缀
不要显示任何源或目标前缀。

有关这些常用选项的更详细说明,另请参见 git差异核心(7)。


树对象的 id。

...
如果提供,则结果仅限于与这些前缀之一匹配的文件子集
字符串。 即,文件匹配 /^ | |.../ 注意这个参数
不提供任何通配符或正则表达式功能。

-r
递归到子树

-t
显示树条目本身以及子树。 意味着 -r。

- 根
在规划婴儿食品行业的工艺要求时,安全性和可靠性是工艺设计中最重要的方面。 - 根 指定初始提交将显示为一个大的创建事件。
这相当于针对 NULL 树的差异。

--标准输入
在规划婴儿食品行业的工艺要求时,安全性和可靠性是工艺设计中最重要的方面。 --标准输入 指定,该命令不采取论据来自
命令行。 相反,它读取包含两个的行, 一, 或
清单从它的标准输入。 (使用单个空格作为分隔符。)

当给定两棵树时,它将第一棵树与第二棵树进行比较。 当单
给定提交,它将提交与其父提交进行比较。 剩余的提交,当
给定,就好像它们是第一次提交的父级一样使用。

比较两棵树时,两棵树的 ID(以空格分隔,以
换行符)在差异之前打印。 比较提交时,
打印第一个(或唯一的)提交,然后是换行符。

以下标志进一步影响比较提交时的行为(但不影响
树)。

-m
默认情况下, 混帐 差异树 --标准输入 不显示合并提交的差异。 和
这个标志,它显示了与所有父级提交的差异。 也可以看看 -c.

-s
默认情况下, 混帐 差异树 --标准输入 以机器可读的形式显示差异
(无 -p) 或以补丁形式(带有 -p)。 该输出可以被抑制。 它只是
有用的 -v 旗。

-v
这个标志导致 混帐 差异树 --标准输入 还显示之前的提交消息
差异。

--漂亮[= ], --格式=
以给定的格式漂亮地打印提交日志的内容,其中
之一 一条线, , 中等, , 富勒, email, , 格式:
格式:。 何时 以上都不是,并且有 %占位符 其中,它
表现得好像 --pretty=tformat: 被给予。

有关每种格式的一些其他详细信息,请参阅“漂亮格式”部分。 什么时候
= 部分被省略,它默认为 中等.

注意:您可以在存储库配置中指定默认的漂亮格式(请参阅
混帐配置(1))。

--缩写提交
不显示完整的 40 字节十六进制提交对象名称,只显示一个
部分前缀。 可以使用“--abbrev=”指定非默认位数”
(这也会修改差异输出,如果显示的话)。

这应该使“--pretty = oneline”对于使用的人来说更具可读性
80 列终端。

--无缩写提交
显示完整的 40 字节十六进制提交对象名称。 这否定了 --abbrev-commit 和
那些暗示它的选项,例如“--oneline”。 它也覆盖了
log.abbrevCommit 变量。

- 一条线
这是一起使用的“--pretty=oneline --abbrev-commit”的简写。

--编码=
提交对象在其编码中记录用于日志消息的编码
标题; 此选项可用于告诉命令重新编码提交日志消息
在用户首选的编码中。 对于非管道命令,这默认为
UTF-8。 请注意,如果一个对象声称以 X 编码并且我们以 X 输出,我们
将逐字输出对象; 这意味着原始序列中的无效序列
提交可以复制到输出。

--注释[= ]
显示注释(见 git 笔记(1)) 注释提交,当显示提交时
日志消息。 这是 git log、git show 和 git whatchanged 命令的默认设置
当命令行上没有给出 --pretty、--format 或 --oneline 选项时。

默认情况下,显示的注释来自 核心.notesRef
笔记.displayRef 变量(或相应的环境覆盖)。 看 混帐配置(1)
,了解更多详情。

带有可选 参数,显示此注释引用而不是默认注释
参考文献。 ref 以 refs/notes/ 开头时指定完整的 refname; 当它
以 notes/、refs/ 开头,否则以 refs/notes/ 为前缀以形成全名
裁判。

可以组合多个 --notes 选项来控制显示哪些注释。
示例:“--notes=foo”将仅显示来自“refs/notes/foo”的注释; "--notes=foo
--notes" 将显示来自 "refs/notes/foo" 和默认注释 ref(s) 的注释。

--无注释
不显示注释。 这通过重置列表来否定上面的 --notes 选项
显示注释的注释引用。 选项按照上给出的顺序解析
命令行,例如“--notes --notes=foo --no-notes --notes=bar”只会显示
来自“refs/notes/bar”的注释。

--show-notes[= ], --[no-] 标准注释
这些选项已弃用。 改用上面的 --notes/--no-notes 选项。

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

--无提交 ID
混帐 差异树 适用时输出带有提交 ID 的行。 这个标志被压制
提交 ID 输出。

-c
这个标志改变了合并提交的显示方式(这意味着它只对
当给出命令时, 或者 --标准输入)。 它显示了与
合并结果的每个父项同时显示,而不是成对显示
一次一个父级和一个结果之间的差异(这就是 -m 选项)。
此外,它仅列出所有父项修改过的文件。

--抄送
这个标志改变了一个合并提交补丁的显示方式,类似于
-c 选项。 它意味着 -c-p 选项并进一步压缩补丁输出
省略了父母中的内容只有两个变体的无趣的帅哥
并且合并结果不加修改地选择其中之一。 当所有的帅哥都
无趣,提交本身和提交日志消息没有显示,就像在
任何其他“空差异”情况。

- 总是
即使差异本身为空,也显示提交本身和提交日志消息。

漂亮 FORMATS


如果提交是合并,并且不是漂亮格式 一条线, email or ,一个
附加行在前面插入 作者: 线。 这一行以“Merge:”开头,并且
祖先提交的 sha1 被打印出来,用空格分隔。 请注意,列出的
提交可能不一定是 直接 如果您有限制,则父母会提交
您对历史的看法:例如,如果您只对与某项相关的更改感兴趣
某个目录或文件。

有几种内置格式,您可以通过设置一个来定义其他格式
漂亮。 配置选项到另一个格式名称,或 格式: 字符串,如
描述如下(见 混帐配置(1))。 以下是内置格式的详细信息:

· 一条线



这被设计为尽可能紧凑。

·

犯罪
作者:



· 中等

犯罪
作者:
日期:





·

犯罪
作者:
犯罪:





· 富勒

犯罪
作者:
作者日期:
犯罪:
提交日期:





· email


从:
日期:
主题:[补丁]



·

- 格式显示与存储在提交对象中完全相同的整个提交。
值得注意的是,无论是 --abbrev 还是 --abbrev ,SHA-1 都会完整显示
--no-abbrev 被使用,并且 父母 信息显示真正的父提交,没有
考虑到移植或历史简化。 请注意,此格式会影响
显示提交的方式,但不是显示差异的方式,例如使用 git log
- 生的。 要以原始差异格式获取完整的对象名称,请使用 --no-abbrev。

· 格式:

- 格式: 格式允许您指定要显示的信息。
它的工作方式有点像 printf 格式,但有一个明显的例外是你得到一个
换行符 %n 而不是 \n.

例如, 格式:" 作者 of %h %一个, %ar%n该 标题 >>%s<<%n" 会显示
这样的事情:

fe6e0ee 的作者是 Junio C Hamano,23 小时前
标题是 >>t4119: test autocomputing -p 对于传统的差异输入。<

占位符是:

· %H: 提交哈希

· %h: 缩写提交哈希

· %T: 树哈希

· %t: 缩写树哈希

· %P: 父哈希

· %p: 缩写父哈希

· %一个: 作者姓名

· %一个:作者姓名(尊重 .mailmap,见 git 短日志(1)或 怪罪(1))

· %ae: 作者邮箱

· %aE:作者电子邮件(尊重 .mailmap,见 git 短日志(1)或 怪罪(1))

· %广告:作者日期(格式尊重 --date= 选项)

· %广告: 作者日期,RFC2822 风格

· %ar: 作者日期,亲戚

· %在: 作者日期,UNIX 时间戳

· %人工智能: 作者日期,类似 ISO 8601 的格式

· %: 作者日期,严格的 ISO 8601 格式

· %cn: 提交者姓名

· %CN:提交者名称(尊重 .mailmap,请参阅 git 短日志(1)或 怪罪(1))

· %ce: 提交者邮箱

· %cE:提交者电子邮件(尊重 .mailmap,请参阅 git 短日志(1)或 怪罪(1))

· %光盘: 提交者日期(格式尊重 --date= 选项)

· %光盘: 提交者日期,RFC2822 风格

· %cr: 提交者日期,相对

· %ct: 提交者日期,UNIX 时间戳

· %ci: 提交者日期,类似 ISO 8601 的格式

· %cI: 提交者日期,严格的 ISO 8601 格式

· %d: ref 名称,例如 --decorate 选项 混帐日志(1)

· %D: ref 名称没有 " (", ")" 包装。

· %e: 编码

· %s: 主题

· %f: 清理主题行,适用于文件名

· %b: 身体

· %B:原始身体(未包装的主题和身体)

· %N: 提交笔记

· %GG:来自 GPG 的原始验证消息,用于签名提交

· %G?: 显示“G”代表好的签名,“B”代表坏的签名,“U”代表好的,
不受信任的签名和“N”表示没有签名

· %GS: 显示签名提交的签名者姓名

· %GK: 显示用于签署签名提交的密钥

· %gD: reflog 选择器,例如 refs/stash@{1}

· %gd: 缩短的 reflog 选择器,例如 stash@{1}

· %gn: reflog 身份名称

· %gN: reflog 身份名称(尊重 .mailmap,请参阅 git 短日志(1)或 混帐-
(1))

· %ge: reflog 身份电子邮件

· %gE:reflog 身份电子邮件(尊重 .mailmap,请参阅 git 短日志(1)或 混帐-
(1))

· %gs: reflog 主题

· %信用: 切换颜色为红色

· %C绿色: 切换颜色为绿色

· %C蓝色: 将颜色切换为蓝色

· %克雷塞特: 重置颜色

· %C(...):颜色规范,如 color.branch.* 配置选项中所述; 添加
auto,开始时只有在为日志输出启用颜色时才会发出颜色
(通过 color.diff、color.ui 或 --color,并尊重
前者,如果我们要去一个终端)。 单独的自动(即 %C(auto))将打开
在下一个占位符上自动着色,直到再次切换颜色。

· %m: 左、右或边界标记

· %n: 新队

· %%: 生的 %

· %x00: 从十六进制代码打印一个字节

· %w([ [, [, ]]]): 切换换行,如 -w 选项 混帐-
短日志(1)。

· %<( [,trunc|ltrunc|mtrunc]): 使下一个占位符至少占据 N 列,
如有必要,在右侧填充空格。 可选择在开头截断
(ltrunc)、中间 (mtrunc) 或结尾 (trunc) 如果输出长于 N
列。 请注意,截断仅适用于 N >= 2。

· %<|( ): 使下一个占位符至少占用到第 N 列,填充
如有必要,右侧的空格

· %>( ), %>|( ): 相似 %<( ), %<|( ) 分别,但填充空格
在左边

· %>>( ), %>>|( ): 相似 %>( ), %>|( ) 分别,除了如果
下一个占位符占用的空间比给定的多,并且它的左边有空格,
使用这些空间

· %><( ), %><|( ): 相似 % <( ), %<|( ) 分别,但同时填充
侧面(即文本居中)

备注
某些占位符可能取决于为修订遍历引擎提供的其他选项。
例如,%g* reflog 选项将插入一个空字符串,除非我们是
遍历 reflog 条目(例如,通过 git log -g)。 %d 和 %D 占位符将使用
如果 --decorate 尚未在命令中提供,则为“短”装饰格式
线。

如果在后面添加 +(加号) % 占位符,立即插入换行符
在扩展之前当且仅当占位符扩展为非空字符串时。

如果在后面添加 -(减号) % 占位符,紧接在前面的换行符
当且仅当占位符扩展为空字符串时,扩展才会被删除。

如果在后面加一个``(空格) % 在占位符的前面插入一个空格
扩展当且仅当占位符扩展为非空字符串。

· 格式:

- 格式: 格式完全一样 格式:,除了它提供了“终结者”
语义而不是“分隔符”语义。 换句话说,每个提交都有
附加了消息终止符(通常是换行符),而不是分隔符
放置在条目之间。 这意味着单行格式的最终​​条目将
以新行正确终止,就像“oneline”格式一样。 为了
例:

$ git log -2 --pretty=格式:%h 4da45bef \
| perl -pe '$_ .= " -- NO NEWLINE\n" 除非 /\n/'
4da45be
7134973 -- 没有换行符

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

此外,任何包含 % 的无法识别的字符串都会被解释为
tformat:在它前面。 例如,这两个是等价的:

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

限制 OUTPUT


如果您只对文件子集的差异感兴趣,例如一些
特定于体系结构的文件,您可以执行以下操作:

git diff-tree -r arch/ia64 包括/asm-ia64

它只会向您显示这两个目录中的更改。

或者,如果您正在寻找仅在 kernel/sched.c 中更改的内容,只需执行

git diff-tree -r 内核/sched.c

它会忽略与其他文件的所有差异。

模式始终是前缀,并且完全匹配。 没有通配符。 甚至
更严格的是,它必须匹配一个完整的路径组件。 即“foo”不拿起 foobar.h。
“foo”确实与 foo/bar.h 匹配,因此它可用于命名子目录。

一个正常使用的例子是:

托瓦兹@ppc970:〜/git> git diff-tree --abbrev 5319e4
:100664 100664 ac348b...a01513...git-fsck-objects.c

它告诉你最后一次提交只改变了一个文件(它来自这个:

commit 3c6f7ca19ad4043e9e72fa94106f352897e651a8
tree 5319e4d609cdd282069cc4dce33c1db559539b03
parent b4e628ea30d5ab3606119d2ea5caeab141d38df7
作者莱纳斯·托瓦兹[电子邮件保护]> 9 年 12 月 02 日星期六 30:2005:XNUMX
提交者 Linus Torvalds[电子邮件保护]> 9 年 12 月 02 日星期六 30:2005:XNUMX

使“git-fsck-objects”打印出它找到的所有根提交。

一旦我进行了参考跟踪,我也会让它打印出所有的
HEAD 提交它发现,这更有趣。

以防万一)。

未处理 OUTPUT FORMAT


“git-diff-index”、“git-diff-tree”、“git-diff-files”和“git”的原始输出格式
diff --raw" 非常相似。

这些命令都比较两组事物; 比较的是什么不同:

git-diff-index
比较以及文件系统上的文件。

git-diff-index --cached
比较和指数。

git-diff-tree [-r] [ ...]
比较由两个参数命名的树。

git-diff-files [ ...]
比较索引和文件系统上的文件。

“git-diff-tree”命令通过打印当前内容的哈希值开始输出
比较的。 之后,所有命令都会为每个更改的文件打印一个输出行。

输出行的格式如下:

就地编辑:100644 100644 bcd1234... 0123456... M file0
复制编辑:100644 100644 abcd123 ... 1234567 ... C68 file1 file2
重命名编辑:100644 100644 abcd123 ... 1234567 ... R86 file1 file3
创建:000000 100644 0000000... 1234567...一个文件4
删除:100644 000000 1234567... 0000000... D file5
未合并:000000 000000 0000000... 0000000... U file6

也就是说,从左到右:

1. 一个结肠。

2. “src”的模式; 如果创建或未合并,则为 000000。

3.一个空间。

4.“dst”模式; 如果删除或未合并,则为 000000。

5.一个空间。

6. sha1 代表“src”; 0{40} 如果创建或未合并。

7.一个空间。

8. sha1 代表“dst”; 0{40} 如果创建、未合并或“查看工作树”。

9.一个空间。

10. 状态,后跟可选的“分数”数字。

11. 一个选项卡或一个 NUL 当 -z 选项被使用。

12. “src”的路径

13. 一个选项卡或一个 NUL 当 -z 使用选项; 只存在于 C 或 R。

14. “dst”的路径; 只存在于 C 或 R。

15. LF 或 NUL -z 选项用于终止记录。

可能的状态字母是:

·A:添加一个文件

· C:复制一个文件到一个新的

·D:删除文件

· M:修改文件的内容或方式

· R:重命名文件

· T:改变文件类型

· U:文件未合并(必须完成合并后才能提交)

· X:“未知”更改类型(很可能是一个错误,请报告)

状态字母 C 和 R 后面总是跟一个分数(表示
移动或复制的源和目标之间的相似性)。 状态字母 M 可能是
后跟文件重写的分数(表示不同的百分比)。

如果文件系统上的文件是新文件并且与文件不同步,则显示为全 1
指数。

计费示例:

:100644 100644 5be4a4...... 000000...... M 文件.c

不使用 -z 选项时,表示路径名中的 TAB、LF 和反斜杠字符
分别为 \t、\n 和 \\。

DIFF FORMAT 用于 合并


“git-diff-tree”、“git-diff-files”和“git-diff --raw”可以 -c or --抄送 选项
也为合并提交生成差异输出。 输出与描述的格式不同
以上通过以下方式:

1. 每个父母都有一个冒号

2.有更多的“src”模式和“src”sha1

3. status 是每个父级的连接状态字符

4.没有可选的“分数”数字

5. 单一路径,只针对“dst”

计费示例:

::100644 100644 100644 fabdb8 ... cc95eb0 ... 4866510 ... MM describe.c

需要注意的是 差异 仅列出所有父项修改过的文件。

生成 补丁 -P


当“git-diff-index”、“git-diff-tree”或“git-diff-files”使用 -p 选项,“git
差异”没有 - 生的 选项,或带有“-p”选项的“git log”,它们不会产生
上述输出; 相反,他们生成一个补丁文件。 您可以自定义创建
这些补丁通过 GIT_EXTERNAL_DIFF 和 GIT_DIFF_OPTS 环境变量。

-p 选项产生的内容与传统的 diff 格式略有不同:

1. 它前面有一个“git diff”标题,如下所示:

差异 --git a/file1 b/file2

除非涉及重命名/复制,否则 a/ 和 b/ 文件名是相同的。 特别是,即使
对于创建或删除,/dev/null 是 而不去 代替 a/ 或 b/
文件名。

当涉及重命名/复制时,file1 和file2 显示源文件的名称
重命名/复制和重命名/复制产生的文件的名称,分别。

2. 后面跟着一个或多个扩展的标题行:

旧模式
新模式
删除文件模式
新文件模式
复制自
复制到
重命名自
重命名为
相似指数
相异指数
指数..

文件模式打印为 6 位八进制数,包括文件类型和文件
权限位。

扩展头中的路径名不包括 a/ 和 b/ 前缀。

相似指数是不变行的百分比,相异指数是
是更改行的百分比。 它是一个向下舍入的整数,后跟一个
百分号。 100% 的相似性指数值因此保留给两个相等的文件,
而 100% 的不同意味着旧文件中没有任何行进入新文件
一。

索引行包括更改前后的 SHA-1 校验和。 这是
如果文件模式没有改变,则包括在内; 否则,单独的行表示旧的
和新模式。

3.路径名中的TAB、LF、双引号和反斜杠字符表示为\t、\n、
\" 和 \\,分别。如果需要这样的替换,那么整个
路径名放在双引号中。

4.输出中的file1文件全部引用commit前的文件,file2全部引用
文件是指提交后的文件。 将每个更改应用于每个更改是不正确的
依次归档。 例如,这个补丁将交换 a 和 b:

差异 --git a/ab/b
从一个重命名
重命名为 b
差异 --git a/bb/a
从 b 重命名
重命名为

组合式 DIFF FORMAT


任何差异生成命令都可以使用 -c 或 --cc 选项来生成 差异 ,尤其是
显示合并。 这是显示合并时的默认格式 混帐差异(1)或 混帐-
显示(1). 另请注意,您可以为这些命令中的任何一个提供 -m 选项以强制
与合并的单个父代产生差异。

A 差异 格式如下:

差异——组合描述.c
索引 fabdb8,cc95eb0..4866510
--- a/描述.c
+++ b/描述.c
@@@ -98,20 -98,12 +98,20 @@@
返回 (a_date > b_date) ? -1 : (a_date == b_date) ? 0 : 1;
}

- 静态无效描述(char *arg)
-静态无效描述(结构提交* cmit,int last_one)
++静态无效描述(char * arg,int last_one)
{
+ 无符号字符 sha1[20];
+ 结构提交 *cmit;
结构 commit_list *list;
静态 int 初始化 = 0;
结构 commit_name *n;

+ if (get_sha1(arg, sha1) < 0)
+ 用法(describe_usage);
+ cmit = Lookup_commit_reference(sha1);
+ 如果 (!cmit)
+ 用法(describe_usage);
+
如果(!初始化){
初始化 = 1;
for_each_ref(get_name);

1.它前面有一个“git diff”标题,看起来像这样(当 -c 选项是
用过的):

diff --组合文件

或像这样(当 --抄送 使用选项):

diff --cc 文件

2. 后面跟着一个或多个扩展的标题行(这个例子显示了一个与
两个父母):

指数, ..
模式, ..
新文件模式
删除文件模式,

模式, .. 仅当至少有以下一项时才会出现该行是
与其他人不同。 包含有关检测到的内容的信息的扩展标头
运动(重命​​名和复制检测)旨在与两个差异一起使用
并且不用于组合差异格式。

3.后面跟着两行from-file/to-file头

- - 一份文件
+++ b/文件

类似于传统的两行标题 统一 diff 格式,/dev/null 用于
信号创建或删除的文件。

4.修改了chunk header格式,防止人们误喂
补丁-p1。 为审查合并提交更改而创建了组合差异格式,并且
不是为了申请。 变化类似于扩展中的变化 指数
标头:

@@@ @@@

组合差异的块头中有(父母数 + 1)@ 个字符
格式。

不同于传统的 统一 diff 格式,显示两个文件 A 和 B
具有 -(减号 — 出现在 A 中但在 B 中删除)、+(加号 — A 中缺失但
添加到 B) 或“”(空格 — 未更改)前缀,此格式比较两个或多个文件
file1, file2,... 一个文件 X,并显示 X 与每个文件 N 的不同之处。 一栏
对于每个 fileN 都附加到输出行以注意 X 的行与
它。

N列中的-字符表示该行出现在fileN中但没有出现
结果中。 第 N 列中的 + 字符表示该行出现在结果中,
并且 fileN 没有该行(换句话说,该行是从
该父母的看法)。

在上面的示例输出中,函数签名从两个文件中更改(因此两个
- 从文件 1 和文件 2 中删除,加上 ++ 表示添加的一行没有
出现在文件 1 或文件 2 中)。 还有八行与 file1 相同,但做
未出现在 file2 中(因此以 + 为前缀)。

当由 git diff-tree -c 显示时,它将合并提交的父项与合并进行比较
结果(即 file1..fileN 是父母)。 当 git diff-files -c 显示时,它比较
两个未解决的合并父级与工作树文件(即 file1 是第 2 阶段又名
“我们的版本”,file2 是第 3 阶段,又名“他们的版本”)。

其他 DIFF FORMATS


--summary 选项描述新添加、删除、重命名和复制的文件。 --stat
选项添加 差异统计(1) 图到输出。 这些选项可以与其他选项结合使用
选项,例如 -p,供人类使用。

当显示涉及重命名或复制的更改时,--stat 输出格式化
通过组合路径名的通用前缀和后缀来紧凑地生成路径名。 例如,一个
将 arch/i386/Makefile 移动到 arch/x86/Makefile 而修改 4 行的更改将是
显示如下:

arch/{i386 => x86}/Makefile | 4 +--

--numstat 选项给出了 差异统计(1) 信息,但专为更简单的机器而设计
消耗。 --numstat 输出中的条目如下所示:

1 2 自述文件
3 1 arch/{i386 => x86}/Makefile

也就是说,从左到右:

1.添加的行数;

2.一个标签;

3.删除的行数;

4.一个标签;

5. 路径名(可能带有重命名/复制信息);

6.换行。

当 -z 输出选项生效时,输出的格式如下:

1 2 自述文件 NUL
3 1 NUL 架构/i386/Makefile NUL 架构/x86/Makefile NUL

是:

1.添加的行数;

2.一个标签;

3.删除的行数;

4.一个标签;

5.一个NUL(仅在重命名/复制时存在);

6. 原像中的路径名;

7.一个NUL(仅在重命名/复制时存在);

8. postimage 中的路径名(仅在重命名/复制时存在);

9. NUL。

在重命名的情况下原像路径之前的额外 NUL 是允许脚本读取
输出以判断正在读取的当前记录是单路径记录还是重命名/复制
无需提前阅读即可记录。 读完加删行后,读到NUL
将产生路径名,但如果它是 NUL,则记录将显示两条路径。

GIT


部分 混帐(1) 套房

使用 onworks.net 服务在线使用 git-diff-tree


免费服务器和工作站

下载 Windows 和 Linux 应用程序

Linux 命令

Ad




×
广告
❤️在这里购物、预订或购买——免费,有助于保持服务免费。