Git 中文参考(七)(8)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Git 中文参考(七)

Git 中文参考(七)(7)https://developer.aliyun.com/article/1565817


提交订购

默认情况下,提交以反向时间顺序显示。

--date-order 

在显示所有子项之前不显示父项,但在提交时间戳顺序中显示提交。

--author-date-order 

在显示所有子项之前不显示父项,但在作者时间戳顺序中显示提交。

--topo-order 

在显示所有子项之前不显示父项,并避免在多行历史记录中显示混合的提交。

例如,在这样的提交历史中:

---1----2----4----7
  \        \
   3----5----6----8---

其中数字表示提交时间戳的顺序,git rev-list--date-order的朋友按时间戳顺序显示提交:8 7 6 5 4 3 2 1。

使用--topo-order,他们将显示 8 6 5 3 7 4 2 1(或 8 7 4 2 6 5 3 1);为了避免将两个并行开发轨道的提交混合在一起,显示一些较旧的提交在较新的提交之前。

--reverse 

输出要以相反顺序显示的提交(请参阅上面的“提交限制”部分)。不能与--walk-reflogs结合使用。

对象遍历

这些选项主要用于打包 Git 存储库。

--objects 

打印列出的提交引用的任何对象的对象 ID。 --objects foo ^bar因此意味着“如果我有提交对象 bar 而不是 foo ”,则“发送我需要下载的所有对象 ID”。

--in-commit-order 

按提交顺序打印树和 blob id。树和 blob id 在它们首次被提交引用后打印。

--objects-edge 

--objects类似,但也打印带有“ - ”字符的排除提交的 ID。 git-pack-objects [1] 使用它来构建一个“瘦”包,它根据这些被排除的提交中包含的对象以分层的形式记录对象,以减少网络流量。

--objects-edge-aggressive 

--objects-edge类似,但它更难以以增加时间为代价查找排除的提交。这用来代替--objects-edge为浅层存储库构建“瘦”包。

--indexed-objects 

假装索引使用的所有树和 blob 都在命令行中列出。请注意,您可能也想使用--objects

--unpacked 

仅适用于--objects;打印不在包中的对象 ID。

--filter=<filter-spec> 

仅适用于--objects*之一;从打印对象列表中省略对象(通常是 blob)。 < filter-spec> 可能是以下之一:

形式 –filter = blob:none 省略所有 blob。

形式 –filter = blob:limit =< n> [kmg] 省略大于 n 个字节或单位的 blob。 n 可能为零。后缀 k,m 和 g 可用于命名 KiB,MiB 或 GiB 中的单位。例如, blob:limit = 1kblob 相同:limit = 1024

形式 –filter =稀疏:oid =< blob-ish> 使用包含在 blob(或 blob-expression)< blob-ish>中的稀疏检验规范。 省略在请求的 refs 上进行稀疏检出时不需要的 blob。

形式 –filter = sparse:path =< path> 类似地使用< path>中包含的稀疏检出规范。

形式 - 过滤器=树:<深度> 省略了从根树的深度> =< depth>的所有斑点和树木。  (如果对象位于所遍历的提交的多个深度处,则为最小深度)。 < depth> = 0 将不包含任何树或  blob,除非在命令行中显式包含(或使用–stdin 时的标准输入)。 < depth> = 1 将仅包括由<  commit>可到达的提交直接引用的树和 blob。或明确给定的对象。 < depth> = 2 类似于<  depth> = 1,同时还包括从明确给定的提交或树中移除一个级别的树和 blob。

--no-filter 

关闭之前的--filter=参数。

--filter-print-omitted 

仅适用于--filter=;打印过滤器省略的对象列表。对象 ID 以“〜”字符为前缀。

--missing=<missing-action> 

一个调试选项,以帮助未来的“部分克隆”开发。此选项指定如何处理丢失的对象。

表格 –missing = error 请求如果遇到丢失的对象,则 rev-list 会停止并显示错误。这是默认操作。

如果遇到丢失的对象,表单 –missing = allow-any 将允许对象遍历继续。缺少的对象将默默地从结果中省略。

形式 –missing = allow-promisor 就像 _ 允许任何 _,但只允许对象遍历继续为 EXPECTED promisor 缺少对象。意外丢失的对象将引发错误。

表格 _- 丢失=打印 _ 就像 _ 允许任何 _,但也会打印缺失对象的列表。对象 ID 以“?”字符为前缀。

--exclude-promisor-objects 

(仅供内部使用。)Prefilter 对象在 promisor 边界处遍历。这与部分克隆一起使用。这比--missing=allow-promisor更强,因为它限制了遍历,而不是仅仅消除有关丢失对象的错误。

--no-walk[=(sorted|unsorted)] 

只显示给定的提交,但不要遍历他们的祖先。如果指定了范围,则无效。如果给出了参数unsorted,则提交将按命令行中给出的顺序显示。否则(如果sorted或没有给出参数),提交按提交时间以反向时间顺序显示。不能与--graph结合使用。

--do-walk 

覆盖之前的--no-walk

提交格式

使用这些选项, git-rev-list [1] 的行为类似于更专业的提交日志工具系列: git-log [1]git-show [1]git-whatchanged [1]

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

以给定格式打印提交日志的内容,其中 < format> 可以是 oneline ,_ 短 培养基 更丰富 之一电子邮件 原始 格式:< string>_ 和 tformat:< string> 。当 < format> 不属于上述情况,并且其中包含 _%占位符 _,其行为就像 –pretty = tformat:< format> 给出了。

有关每种格式的一些其他详细信息,请参阅“PRETTY FORMATS”部分。当 =< format> 部分省略,默认为 medium

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

--abbrev-commit 

而不是显示完整的 40 字节十六进制提交对象名称,而只显示部分前缀。可以使用“–abbrev =< n>”指定非默认位数(如果显示,也会修改 diff 输出)。

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

--no-abbrev-commit 

显示完整的 40 字节十六进制提交对象名称。这否定了--abbrev-commit以及暗示它的选项,例如“–oneline”。它还会覆盖log.abbrevCommit变量。

--oneline 

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

--encoding=<encoding> 

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

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

执行选项卡扩展(将每个选项卡替换为足够的空格以填充到日志消息中的 < n> 的倍数的下一个显示列),然后在输出中显示它。 --expand-tabs--expand-tabs=8的简写,--no-expand-tabs--expand-tabs=0的简写,它会禁用制表符扩展。

默认情况下,选项卡以相当格式展开,将日志消息缩进 4 个空格(即 medium ,默认情况下, fullfulller )。

--show-signature 

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

--relative-date 

--date=relative的同义词。

--date=<format> 

仅对以人类可读格式显示的日期生效,例如使用--pretty时。 log.date config 变量为日志命令的--date选项设置默认值。默认情况下,日期显示在原始时区(提交者或作者)中。如果-local附加到格式(例如,iso-local),则使用用户的本地时区。

--date=relative显示相对于当前时间的日期,例如“2 小时前”。 -local选项对--date=relative无效。

--date=local--date=default-local的别名。

--date=iso(或--date=iso8601)以类似 ISO 8601 的格式显示时间戳。与严格的 ISO 8601 格式的区别在于:

  • 空格而不是T日期/时间分隔符
  • 时区和时区之间的空间
  • 时区的小时和分钟之间没有冒号

--date=iso-strict(或--date=iso8601-strict)以严格的 ISO 8601 格式显示时间戳。

  • --date=rfc(或--date=rfc2822)以 RFC 2822 格式显示时间戳,通常在电子邮件中找到。
  • --date=short仅以YYYY-MM-DD格式显示日期,但不显示时间。
  • --date=raw显示自纪元以来的秒数(1970-01-01 00:00:00 UTC),后跟一个空格,然后将时区显示为与 UTC 的偏移量(+-与四位数;前两位是小时,后两位是分钟)。即,好像时间戳是用strftime("%s %z")格式化的。请注意,-local选项不会影响秒 - 自 - 纪元值(始终以 UTC 为单位),但会切换附带的时区值。
  • --date=human如果时区与当前时区不匹配则显示时区,如果匹配则不显示整个日期(即跳过“今年”日期的打印年份,但也跳过整个日期如果它是在过去几天,我们可以说它是什么工作日)。对于较旧的日期,小时和分钟也被省略。
  • --date=unix将日期显示为 Unix 纪元时间戳(自 1970 年以来的秒数)。与--raw一样,它始终为 UTC,因此-local无效。
  • --date=format:...将格式...输入系统strftime,%z 和%Z 除外,它们在内部处理。使用--date=format:%c以系统区域设置的首选格式显示日期。有关格式占位符的完整列表,请参阅strftime手册。使用-local时,正确的语法是--date=format-local:...
  • --date=default是默认格式,类似于--date=rfc2822,但有一些例外:
  • 星期几之后没有逗号
  • 使用本地时区时,省略时区
--header 

以 raw 格式打印提交的内容;每个记录用 NUL 字符分隔。

--parents 

同时打印提交的父级(以“提交父级”的形式)。也可以启用父重写,请参阅上面的 _ 历史简化 _。

--children 

同时打印提交的子项(以“提交子项…”的形式)。也可以启用父重写,请参阅上面的 _ 历史简化 _。

--timestamp 

打印原始提交时间戳。

--left-right 

标记可以从中获取提交的对称差异的哪一侧。左侧的提示以<为前缀,右侧的提示以>为前缀。如果与--boundary结合使用,则这些提交以-为前缀。

例如,如果您有此拓扑:

y---b---b  branch B
      / \ /
     /   .
    /   / \
   o---x---a---a  branch A

你会得到这样的输出:

$ git rev-list --left-right --boundary --pretty=oneline A...B
  >bbbbbbb... 3rd on b
  >bbbbbbb... 2nd on b
  <aaaaaaa... 3rd on a
  <aaaaaaa... 2nd on a
  -yyyyyyy... 1st on b
  -xxxxxxx... 1st on a
--graph 

在输出的左侧绘制提交历史的基于文本的图形表示。这可能会导致在提交之间打印额外的行,以便正确绘制图形历史记录。不能与--no-walk结合使用。

这使父进行重写,参见上面的 _ 历史简化 _。

默认情况下,这意味着--topo-order选项,但也可以指定--date-order选项。

--show-linear-break[=<barrier>] 

当不使用–graph 时,所有历史分支都被展平,这使得很难看出两个连续的提交不属于线性分支。在这种情况下,此选项会在它们之间设置障碍。如果指定了,则显示的是字符串而不是默认字符串。

--count 

打印一个数字,说明将列出多少次提交,并禁止所有其他输出。与--left-right一起使用时,打印左右提交的计数,由制表符分隔。与--cherry-mark一起使用时,请忽略这些计数中的补丁等效提交,并打印由选项卡分隔的等效提交的计数。

漂亮的格式

如果提交是合并,并且如果漂亮格式不是 oneline ,_ 电子邮件 _ 或 raw ,则在 _ 作者之前插入另一行:_ 行。该行以“Merge:”开头,并且打印祖先提交的 sha1,用空格分隔。请注意,如果您限制了对历史记录的查看,则列出的提交可能不一定是直接父提交的列表:例如,如果您只对与某个目录或文件相关的更改感兴趣。

有几种内置格式,您可以通过设置漂亮的格式来定义其他格式。< name>将选项配置为另一种格式名称或 _ 格式:_ 字符串,如下所述(参见 git-config [1] )。以下是内置格式的详细信息:

  • oneline
&lt;sha1&gt; &lt;title line&gt;
  • 这是为了尽可能紧凑。
  • _ 短 _
commit &lt;sha1&gt;
Author: &lt;author&gt;
&lt;title line&gt;
  • _ 中 _
commit &lt;sha1&gt;
Author: &lt;author&gt;
Date:   &lt;author date&gt;
&lt;title line&gt;
&lt;full commit message&gt;
  • _ 全 _
commit &lt;sha1&gt;
Author: &lt;author&gt;
Commit: &lt;committer&gt;
&lt;title line&gt;
&lt;full commit message&gt;
  • _ 更丰富 _
commit &lt;sha1&gt;
Author:     &lt;author&gt;
AuthorDate: &lt;author date&gt;
Commit:     &lt;committer&gt;
CommitDate: &lt;committer date&gt;
&lt;title line&gt;
&lt;full commit message&gt;
  • _ 电子邮件 _
From &lt;sha1&gt; &lt;date&gt;
From: &lt;author&gt;
Date: &lt;author date&gt;
Subject: [PATCH] &lt;title line&gt;
&lt;full commit message&gt;
  • _ 原始 _
    raw 格式显示完整提交,与存储在提交对象中完全相同。值得注意的是,无论是否使用–abbrev 或–no-abbrev,SHA-1 都会完整显示,并且  _ 父 _ 信息显示真正的父提交,而不考虑移植或历史简化。请注意,此格式会影响提交的显示方式,但不会影响显示差异的方式,例如用git log --raw。要以原始 diff 格式获取完整对象名称,请使用--no-abbrev
  • _ 格式:< string>__ 格式:< string>_ 格式允许您指定要显示的信息。它的工作方式有点像 printf 格式,但有一个值得注意的例外,即你用 %n 而不是 \ n 获得换行符。例如,_ 格式:“%h 的作者是%an,%ar%n 标题是>>%s<<%n”_ 将显示如下内容:
The author of fe6e0ee was Junio C Hamano, 23 hours ago
The title was &gt;&gt;t4119: test autocomputing -p&lt;n&gt; for traditional diff input.&lt;&lt;
  • 占位符是:
  • %H :提交哈希
  • %h :缩写提交哈希
  • %T :树形哈希
  • %t :缩写树哈希
  • %P :父哈希
  • %p :缩写为父哈希值
  • _%和 _:作者姓名
  • %aN :作者姓名(尊重.mailmap,见 git-shortlog [1]git-blame [1]
  • %ae :作者电邮
  • %aE :作者电子邮件(尊重.mailmap,见 git-shortlog [1]git-blame [1]
  • %ad :作者日期(格式尊重 - 日期=选项)
  • %aD :作者日期,RFC2822 风格
  • %ar :作者日期,相对
  • 的 _%:作者日期,UNIX 时间戳 _
  • %ai :作者日期,ISO 8601 样格式
  • %aI :作者日期,严格的 ISO 8601 格式
  • %cn :提交者名称
  • %cN :提交者名称(尊重.mailmap,见 git-shortlog [1]git-blame [1]
  • %ce :提交者电子邮件
  • %cE :提交者电子邮件(尊重.mailmap,参见 git-shortlog [1]git-blame [1]
  • %cd :提交者日期(格式尊重 - 日期=选项)
  • %cD :提交者日期,RFC2822 样式
  • %cr :提交者日期,相对
  • %ct :提交者日期,UNIX 时间戳
  • %ci :提交者日期,类似 ISO 8601 的格式
  • %cI :提交者日期,严格的 ISO 8601 格式
  • %d :引用名称,如 git-log [1] 的–decorate 选项
  • %D :没有“(”,“)”包装的引用名称。
  • %S :在达到提交的命令行上给出的引用名称(如git log --source),仅适用于git log
  • %e :编码
  • %s :受试者
  • %f :已清理的主题行,适用于文件名
  • %b :身体
  • %B :生体(未包裹的主体和身体)
  • %GG :来自 GPG 的签名提交的原始验证消息
  • %G? :显示好的(有效)签名“G”,坏签名显示“B”,有效期未知的好签名显示“U”,已过期的好签名显示“X”,“Y”代表由过期密钥签名的好签名,“R”表示由撤销密钥签名的好签名,“E”表示签名无法检查(例如缺少密钥),“N”表示没有签名
  • %GS :显示签名提交的签名者姓名
  • %GK :显示用于签署签名提交的密钥
  • %GF :显示用于签署签名提交的密钥的指纹
  • %GP :显示主键的指纹,其子键用于签名提交的签名
  • %gD :reflog 选择器,例如refs/stash@{1}refs/stash@{2 minutes ago};格式遵循-g选项描述的规则。 @之前的部分是命令行中给出的 refname(因此git log -g refs/heads/master将产生refs/heads/master@{0})。
  • %gd :缩短了 reflog 选择器;与%gD相同,但 refname 部分缩短了人类的可读性(因此refs/heads/master变为master)。
  • %gn :reflog 身份名称
  • %gN :reflog 身份名称(尊重.mailmap,见 git-shortlog [1]git-blame [1]
  • %ge :reflog 身份电子邮件
  • %gE :reflog 身份邮件(尊重.mailmap,见 git-shortlog [1]git-blame [1]
  • %gs :reflog 主题
  • %Cred :将颜色切换为红色
  • %Cgreen :将颜色切换为绿色
  • %Cblue :将颜色切换为蓝色
  • %Creset :重置颜色
  • %C(…):颜色规格,如 git-config [1] 的“CONFIGURATION FILE”部分中的值所述。默认情况下,仅在启用日志输出时显示颜色(通过color.diffcolor.ui--color,并且如果我们要去终端,则尊重前者的auto设置)。 %C(auto,...)被接受为默认的历史同义词(例如,%C(auto,red))。即使没有启用颜色,指定%C(always,...)也会显示颜色(尽管只考虑使用--color=always为整个输出启用颜色,包括这种格式和其他任何 git 可能颜色的颜色)。单独auto(即%C(auto))将打开下一个占位符的自动着色,直到再次切换颜色。
  • %m :左(<),右(>)或边界(-)标记
  • %n :换行符
  • %% :原始
  • %x00 :从十六进制代码打印一个字节
  • %w([< w> [,< i1> [,< i2>]]]):切换行换行,类似 git-shortlog [1]的-w 选项
  • %<(< N> [,trunc | ltrunc | mtrunc]):使下一个占位符至少取 N 列,如果需要,在右边填充空格。如果输出长于 N 列,则可以选择在开头(ltrunc),中间(mtrunc)或结尾(trunc)截断。请注意,截断仅适用于 N> = 2。
  • %< |(< N>):使下一个占位符至少占用第 N 列,如果需要,在右边填充空格
  • %>(< N>)%> |(< N>):与 %相似,%< |(< N>)_,但左边的填充空格 _
  • %>(< N>)%> |(< N>):类似于 %>(< N>分别是 %> |(< N>),除非下一个占位符占用的空间多于给定的空间并且左侧有空格,请使用这些空格
  • %><(< N>)%>< |(< N>):类似于 %<(< N> )%< |(< N>),但填充两侧(即文本居中)
  • %(预告片[:options]):显示 git-interpret-trailers [1] 解释的正文预告片。 trailers字符串后面可以跟冒号和零个或多个逗号分隔选项。如果给出了only选项,则省略拖车块中的非拖车线。如果给出unfold选项,则表现得就像给出了 interpre-trailer 的--unfold选项一样。例如,%(trailers:only,unfold)两者都做。

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

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

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

如果在占位符的 之后添加一个“空格”,则在扩展之前插入一个空格,当且仅当占位符扩展为非空字符串时。

  • tformat:
    _ 格式:_ 格式与 _  格式完全相同:_,除了它提供“终结符”语义而不是“分隔符”语义。换句话说,每个提交都附加了消息终止符(通常是换行符),而不是在条目之间放置的分隔符。这意味着单行格式的最终输入将使用新行正确终止,就像“oneline”格式一样。例如:
$ 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

GIT

部分 git [1] 套件


Git 中文参考(七)(9)https://developer.aliyun.com/article/1565819

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
18天前
|
机器学习/深度学习 Shell 网络安全
【Git】Git 命令参考手册
Git 命令参考手册的扩展部分,包含了从基础操作到高级功能的全面讲解。
26 3
|
4月前
|
监控 程序员 开发工具
如何规范Git提交-参考阿里云开发者社区
这篇文章分享了如何规范Git提交,介绍了commit message的格式规范,并通过webhook监控机制来确保代码提交的规范性,从而提高研发效率和代码维护质量。
|
5月前
|
存储 缓存 网络安全
Git 中文参考(一)(8)
Git 中文参考(一)
54 2
|
5月前
|
存储 网络安全 开发工具
Git 中文参考(一)(7)
Git 中文参考(一)
59 2
|
5月前
|
存储 算法 Java
Git 中文参考(一)(6)
Git 中文参考(一)
53 2
|
5月前
|
存储 Shell 开发工具
Git 中文参考(一)(5)
Git 中文参考(一)
38 2
|
5月前
|
存储 开发工具 git
Git 中文参考(一)(4)
Git 中文参考(一)
42 2
|
5月前
|
存储 安全 开发工具
Git 中文参考(一)(3)
Git 中文参考(一)
26 2
|
5月前
|
存储 Shell 开发工具
Git 中文参考(一)(2)
Git 中文参考(一)
46 2
|
5月前
|
存储 人工智能 开发工具
Git 中文参考(五)(9)
Git 中文参考(五)
144 2