git-interpret-trailers
在提交消息中添加或解析结构化信息
概要
git interpret-trailers [--in-place] [--trim-empty]
[(--trailer (<key>|<key-alias>)[(=|:)<value>])...]
[--parse] [<file>...]描述
添加或解析类似于 RFC 822 电子邮件头的_尾部_行,位于提交消息的自由格式部分末尾。例如,在以下提交消息中:
subject
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Signed-off-by: Alice <alice@example.com>
Signed-off-by: Bob <bob@example.com>最后两行以 Signed-off-by 开头的是尾部。
此命令从 <file> 参数或标准输入(如果未指定 <file>)读取提交消息。如果指定了 --parse,输出由来自输入的已解析尾部组成,不受任何命令行选项或配置变量的影响。
否则,此命令对每个输入文件应用 trailer.<key-alias> 配置变量(可能添加新尾部以及重新定位它们),以及任何可以覆盖配置变量的命令行参数(例如 --trailer=... 也可能添加新尾部)。结果在标准输出上发出。
此命令还可以对 git-format-patch(1) 的输出进行操作,这比纯提交消息更详细。即,此类输出包括提交消息(如上)、--- 分隔符行和补丁部分。对于这些输入,分隔符和补丁部分不会被此命令修改,并按原样在输出上发出,除非指定了 --no-divider。
某些配置变量控制 --trailer 参数应用于每个输入的方式以及输入中任何现有尾部被更改的方式。它们还使自动添加某些尾部成为可能。
默认情况下,使用 --trailer 给出的 <key>=<value> 或 <key>:<value> 参数仅在最后一个尾部具有不同的(<key>,<value>)对(或没有现有尾部)时才追加到现有尾部之后。<key> 和 <value> 部分将被修剪以删除开头和尾随空格,修剪后的 <key> 和 <value> 将如下所示出现在输出中:
key: value这意味着修剪后的 <key> 和 <value> 将由 ": "(一个冒号后跟一个空格)分隔。
为方便起见,可以配置 <key-alias> 以使命令行上的 --trailer 更短。可以使用 trailer.<key-alias>.key 配置变量进行配置。<key-alias> 必须是完整 <key> 字符串的前缀,但大小写无关紧要。
默认情况下,新尾部将出现在所有现有尾部的末尾。如果没有现有尾部,新尾部将出现在输入的末尾。如果前面没有空行,将在新尾部之前添加一个空行。
选项
--in-place,--no-in-place- 就地编辑文件。默认为--no-in-place。--trim-empty,--no-trim-empty- 如果任何尾部的 <value> 部分仅包含空格,整个尾部将从输出中删除。默认为--no-trim-empty。--trailer=<key>[(=|:)<value>],--no-trailer- 指定应作为尾部应用到输入的(<key>,<value>)对。可以多次给出。使用--no-trailer重置列表。--where=<placement>,--no-where- 指定所有新尾部将添加到的位置。可能的位置为after、before、end或start。--if-exists=<action>,--no-if-exists- 指定当输入中已存在至少一个具有相同 <key> 的尾部时将执行的操作。可能的操作为addIfDifferent、addIfDifferentNeighbor、add、replace和doNothing。--if-missing=<action>,--no-if-missing- 指定当输入中没有其他具有相同 <key> 的尾部时将执行的操作。可能的操作为doNothing或add。--only-trailers,--no-only-trailers- 仅输出尾部,不输出输入的任何其他部分。默认为--no-only-trailers。--only-input,--no-only-input- 仅输出输入中存在的尾部;不从命令行或通过应用trailer.<key-alias>配置变量添加任何尾部。默认为--no-only-input。--unfold,--no-unfold- 如果尾部的值跨越多行(即"折叠"),将值重新格式化为单行。默认为--no-unfold。--parse---only-trailers --only-input --unfold的便利别名。--divider,--no-divider- 将---视为提交消息的结尾。这是默认值。当您知道输入仅包含提交消息本身时使用--no-divider。
配置变量
trailer.separators- 此选项指定哪些字符被识别为尾部分隔符。默认只有:被识别为尾部分隔符,但为了与其他 git 命令兼容,=在命令行上始终被接受。trailer.where- 此选项指定新尾部将添加到的位置。可以是end(默认)、start、after或before。trailer.ifexists- 此选项使您可以选择当输入中已存在至少一个具有相同 <key> 的尾部时将执行的操作。有效值为:addIfDifferentNeighbor(默认)、addIfDifferent、add、replace或doNothing。trailer.ifmissing- 此选项使您可以选择当输入中还没有具有相同 <key> 的尾部时将执行的操作。有效值为:add(默认)和doNothing。trailer.<key-alias>.key- 为 <key> 定义 <key-alias>。<key-alias> 必须是 <key> 的前缀(大小写无关)。trailer.<key-alias>.where- 此选项采用与trailer.where配置变量相同的值,并覆盖该选项为具有指定 <key-alias> 的尾部指定的内容。trailer.<key-alias>.ifexists- 此选项采用与trailer.ifexists配置变量相同的值。trailer.<key-alias>.ifmissing- 此选项采用与trailer.ifmissing配置变量相同的值。trailer.<key-alias>.cmd- 此选项可用于指定将调用一次的 shell 命令以自动添加具有指定 <key-alias> 的尾部,然后在每次指定--trailer <key-alias>=<value>参数时调用以修改此选项将产生的尾部的 <value>。
示例
配置带有
Signed-off-by键的sign尾部,然后向提交消息文件添加两个尾部:$ git config trailer.sign.key "Signed-off-by" $ cat msg.txt subject body text $ git interpret-trailers --trailer 'sign: Alice <alice@example.com>' --trailer 'sign: Bob <bob@example.com>' <msg.txt subject body text Signed-off-by: Alice <alice@example.com> Signed-off-by: Bob <bob@example.com>使用
--in-place选项就地编辑提交消息文件:$ cat msg.txt subject body text Signed-off-by: Bob <bob@example.com> $ git interpret-trailers --trailer 'Acked-by: Alice <alice@example.com>' --in-place msg.txt $ cat msg.txt subject body text Signed-off-by: Bob <bob@example.com> Acked-by: Alice <alice@example.com>
另请参阅
git-commit(1), git-format-patch(1), git-config(1)
Git
git(1) 套件的一部分
