'\" t
.\"     Title: git-interpret-trailers
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets v1.79.2 <http://docbook.sf.net/>
.\"      Date: 2025-09-15
.\"    Manual: Git Manual
.\"    Source: Git 2.51.0.268.ga483264b01
.\"  Language: English
.\"
.TH "GIT\-INTERPRET\-TRAILERS" "1" "2025-09-15" "Git 2\&.51\&.0\&.268\&.ga48326" "Git Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
git-interpret-trailers \- Add or parse structured information in commit messages
.SH "SYNOPSIS"
.sp
.nf
\fIgit interpret\-trailers\fR [\-\-in\-place] [\-\-trim\-empty]
                        [(\-\-trailer (<key>|<key\-alias>)[(=|:)<value>])\&...\:]
                        [\-\-parse] [<file>\&...\:]
.fi
.SH "DESCRIPTION"
.sp
Add or parse \fItrailer\fR lines that look similar to RFC 822 e\-mail headers, at the end of the otherwise free\-form part of a commit message\&. For example, in the following commit message
.sp
.if n \{\
.RS 4
.\}
.nf
subject

Lorem ipsum dolor sit amet, consectetur adipiscing elit\&.

Signed\-off\-by: Alice <alice@example\&.com>
Signed\-off\-by: Bob <bob@example\&.com>
.fi
.if n \{\
.RE
.\}
.sp
the last two lines starting with "Signed\-off\-by" are trailers\&.
.sp
This command reads commit messages from either the <file> arguments or the standard input if no <file> is specified\&. If \fB\-\-parse\fR is specified, the output consists of the parsed trailers coming from the input, without influencing them with any command line options or configuration variables\&.
.sp
Otherwise, this command applies \fBtrailer\&.*\fR configuration variables (which could potentially add new trailers, as well as reposition them), as well as any command line arguments that can override configuration variables (such as \fB\-\-trailer=\&.\&.\fR\&. which could also add new trailers), to each input file\&. The result is emitted on the standard output\&.
.sp
This command can also operate on the output of \fBgit-format-patch\fR(1), which is more elaborate than a plain commit message\&. Namely, such output includes a commit message (as above), a "\-\-\-" divider line, and a patch part\&. For these inputs, the divider and patch parts are not modified by this command and are emitted as is on the output, unless \fB\-\-no\-divider\fR is specified\&.
.sp
Some configuration variables control the way the \fB\-\-trailer\fR arguments are applied to each input and the way any existing trailer in the input is changed\&. They also make it possible to automatically add some trailers\&.
.sp
By default, a \fI<key>=<value>\fR or \fI<key>:<value>\fR argument given using \fB\-\-trailer\fR will be appended after the existing trailers only if the last trailer has a different (<key>, <value>) pair (or if there is no existing trailer)\&. The <key> and <value> parts will be trimmed to remove starting and trailing whitespace, and the resulting trimmed <key> and <value> will appear in the output like this:
.sp
.if n \{\
.RS 4
.\}
.nf
key: value
.fi
.if n \{\
.RE
.\}
.sp
This means that the trimmed <key> and <value> will be separated by \*(Aq: \*(Aq (one colon followed by one space)\&.
.sp
For convenience, a <key\-alias> can be configured to make using \fB\-\-trailer\fR shorter to type on the command line\&. This can be configured using the \fItrailer\&.<key\-alias>\&.key\fR configuration variable\&. The <keyAlias> must be a prefix of the full <key> string, although case sensitivity does not matter\&. For example, if you have
.sp
.if n \{\
.RS 4
.\}
.nf
trailer\&.sign\&.key "Signed\-off\-by: "
.fi
.if n \{\
.RE
.\}
.sp
in your configuration, you only need to specify \fB\-\-trailer=\fR"sign: \fBfoo\fR" on the command line instead of \fB\-\-trailer=\fR"Signed\-off\-by: \fBfoo\fR"\&.
.sp
By default the new trailer will appear at the end of all the existing trailers\&. If there is no existing trailer, the new trailer will appear at the end of the input\&. A blank line will be added before the new trailer if there isn\(cqt one already\&.
.sp
Existing trailers are extracted from the input by looking for a group of one or more lines that (i) is all trailers, or (ii) contains at least one Git\-generated or user\-configured trailer and consists of at least 25% trailers\&. The group must be preceded by one or more empty (or whitespace\-only) lines\&. The group must either be at the end of the input or be the last non\-whitespace lines before a line that starts with \fI\-\-\-\fR (followed by a space or the end of the line)\&.
.sp
When reading trailers, there can be no whitespace before or inside the <key>, but any number of regular space and tab characters are allowed between the <key> and the separator\&. There can be whitespaces before, inside or after the <value>\&. The <value> may be split over multiple lines with each subsequent line starting with at least one whitespace, like the "folding" in RFC 822\&. Example:
.sp
.if n \{\
.RS 4
.\}
.nf
key: This is a very long value, with spaces and
  newlines in it\&.
.fi
.if n \{\
.RE
.\}
.sp
Note that trailers do not follow (nor are they intended to follow) many of the rules for RFC 822 headers\&. For example they do not follow the encoding rule\&.
.SH "OPTIONS"
.PP
\-\-in\-place
.RS 4
Edit the files in place\&.
.RE
.PP
\-\-trim\-empty
.RS 4
If the <value> part of any trailer contains only whitespace, the whole trailer will be removed from the output\&. This applies to existing trailers as well as new trailers\&.
.RE
.PP
\-\-trailer <key>[(=|:)<value>]
.RS 4
Specify a (<key>, <value>) pair that should be applied as a trailer to the inputs\&. See the description of this command\&.
.RE
.PP
\-\-where <placement>, \-\-no\-where
.RS 4
Specify where all new trailers will be added\&. A setting provided with
\fI\-\-where\fR
overrides the
\fBtrailer\&.where\fR
and any applicable
\fBtrailer\&.\fR\fI<keyAlias>\fR\fB\&.where\fR
configuration variables and applies to all
\fI\-\-trailer\fR
options until the next occurrence of
\fI\-\-where\fR
or
\fI\-\-no\-where\fR\&. Upon encountering
\fI\-\-no\-where\fR, clear the effect of any previous use of
\fI\-\-where\fR, such that the relevant configuration variables are no longer overridden\&. Possible placements are
\fBafter\fR,
\fBbefore\fR,
\fBend\fR
or
\fBstart\fR\&.
.RE
.PP
\-\-if\-exists <action>, \-\-no\-if\-exists
.RS 4
Specify what action will be performed when there is already at least one trailer with the same <key> in the input\&. A setting provided with
\fI\-\-if\-exists\fR
overrides the
\fBtrailer\&.ifExists\fR
and any applicable
\fBtrailer\&.\fR\fI<keyAlias>\fR\fB\&.ifExists\fR
configuration variables and applies to all
\fI\-\-trailer\fR
options until the next occurrence of
\fI\-\-if\-exists\fR
or
\fI\-\-no\-if\-exists\fR\&. Upon encountering
\fI\-\-no\-if\-exists\fR, clear the effect of any previous use of
\fI\-\-if\-exists\fR, such that the relevant configuration variables are no longer overridden\&. Possible actions are
\fBaddIfDifferent\fR,
\fBaddIfDifferentNeighbor\fR,
\fBadd\fR,
\fBreplace\fR
and
\fBdoNothing\fR\&.
.RE
.PP
\-\-if\-missing <action>, \-\-no\-if\-missing
.RS 4
Specify what action will be performed when there is no other trailer with the same <key> in the input\&. A setting provided with
\fI\-\-if\-missing\fR
overrides the
\fBtrailer\&.ifMissing\fR
and any applicable
\fBtrailer\&.\fR\fI<keyAlias>\fR\fB\&.ifMissing\fR
configuration variables and applies to all
\fI\-\-trailer\fR
options until the next occurrence of
\fI\-\-if\-missing\fR
or
\fI\-\-no\-if\-missing\fR\&. Upon encountering
\fI\-\-no\-if\-missing\fR, clear the effect of any previous use of
\fI\-\-if\-missing\fR, such that the relevant configuration variables are no longer overridden\&. Possible actions are
\fBdoNothing\fR
or
\fBadd\fR\&.
.RE
.PP
\-\-only\-trailers
.RS 4
Output only the trailers, not any other parts of the input\&.
.RE
.PP
\-\-only\-input
.RS 4
Output only trailers that exist in the input; do not add any from the command\-line or by applying
\fBtrailer\&.*\fR
configuration variables\&.
.RE
.PP
\-\-unfold
.RS 4
If a trailer has a value that runs over multiple lines (aka "folded"), reformat the value into a single line\&.
.RE
.PP
\-\-parse
.RS 4
A convenience alias for
\fB\-\-only\-trailers\fR
\fB\-\-only\-input\fR
\fB\-\-unfold\fR\&. This makes it easier to only see the trailers coming from the input without influencing them with any command line options or configuration variables, while also making the output machine\-friendly with \-\-unfold\&.
.RE
.PP
\-\-no\-divider
.RS 4
Do not treat
\fB\-\-\-\fR
as the end of the commit message\&. Use this when you know your input contains just the commit message itself (and not an email or the output of
\fBgit\fR
\fBformat\-patch\fR)\&.
.RE
.SH "CONFIGURATION VARIABLES"
.sp
Everything below this line in this section is selectively included from the \fBgit-config\fR(1) documentation\&. The content is the same as what\(cqs found there:
.PP
trailer\&.separators
.RS 4
This option tells which characters are recognized as trailer separators\&. By default only
\fI:\fR
is recognized as a trailer separator, except that
\fI=\fR
is always accepted on the command line for compatibility with other git commands\&.
.sp
The first character given by this option will be the default character used when another separator is not specified in the config for this trailer\&.
.sp
For example, if the value for this option is "%=$", then only lines using the format
\fI<key><sep><value>\fR
with <sep> containing
\fI%\fR,
\fI=\fR
or
\fI$\fR
and then spaces will be considered trailers\&. And
\fI%\fR
will be the default separator used, so by default trailers will appear like:
\fI<key>% <value>\fR
(one percent sign and one space will appear between the key and the value)\&.
.RE
.PP
trailer\&.where
.RS 4
This option tells where a new trailer will be added\&.
.sp
This can be
\fBend\fR, which is the default,
\fBstart\fR,
\fBafter\fR
or
\fBbefore\fR\&.
.sp
If it is
\fBend\fR, then each new trailer will appear at the end of the existing trailers\&.
.sp
If it is
\fBstart\fR, then each new trailer will appear at the start, instead of the end, of the existing trailers\&.
.sp
If it is
\fBafter\fR, then each new trailer will appear just after the last trailer with the same <key>\&.
.sp
If it is
\fBbefore\fR, then each new trailer will appear just before the first trailer with the same <key>\&.
.RE
.PP
trailer\&.ifexists
.RS 4
This option makes it possible to choose what action will be performed when there is already at least one trailer with the same <key> in the input\&.
.sp
The valid values for this option are:
\fBaddIfDifferentNeighbor\fR
(this is the default),
\fBaddIfDifferent\fR,
\fBadd\fR,
\fBreplace\fR
or
\fBdoNothing\fR\&.
.sp
With
\fBaddIfDifferentNeighbor\fR, a new trailer will be added only if no trailer with the same (<key>, <value>) pair is above or below the line where the new trailer will be added\&.
.sp
With
\fBaddIfDifferent\fR, a new trailer will be added only if no trailer with the same (<key>, <value>) pair is already in the input\&.
.sp
With
\fBadd\fR, a new trailer will be added, even if some trailers with the same (<key>, <value>) pair are already in the input\&.
.sp
With
\fBreplace\fR, an existing trailer with the same <key> will be deleted and the new trailer will be added\&. The deleted trailer will be the closest one (with the same <key>) to the place where the new one will be added\&.
.sp
With
\fBdoNothing\fR, nothing will be done; that is no new trailer will be added if there is already one with the same <key> in the input\&.
.RE
.PP
trailer\&.ifmissing
.RS 4
This option makes it possible to choose what action will be performed when there is not yet any trailer with the same <key> in the input\&.
.sp
The valid values for this option are:
\fBadd\fR
(this is the default) and
\fBdoNothing\fR\&.
.sp
With
\fBadd\fR, a new trailer will be added\&.
.sp
With
\fBdoNothing\fR, nothing will be done\&.
.RE
.PP
trailer\&.<keyAlias>\&.key
.RS 4
Defines a <keyAlias> for the <key>\&. The <keyAlias> must be a prefix (case does not matter) of the <key>\&. For example, in
\fBgit\fR
\fBconfig\fR
\fBtrailer\&.ack\&.key\fR
"Acked\-by" the "Acked\-by" is the <key> and the "ack" is the <keyAlias>\&. This configuration allows the shorter
\fB\-\-trailer\fR
"ack:\fB\&.\&.\&.\fR" invocation on the command line using the "ack" <keyAlias> instead of the longer
\fB\-\-trailer\fR
"Acked\-by:\fB\&.\&.\&.\fR"\&.
.sp
At the end of the <key>, a separator can appear and then some space characters\&. By default the only valid separator is
\fI:\fR, but this can be changed using the
\fBtrailer\&.separators\fR
config variable\&.
.sp
If there is a separator in the key, then it overrides the default separator when adding the trailer\&.
.RE
.PP
trailer\&.<keyAlias>\&.where
.RS 4
This option takes the same values as the
\fItrailer\&.where\fR
configuration variable and it overrides what is specified by that option for trailers with the specified <keyAlias>\&.
.RE
.PP
trailer\&.<keyAlias>\&.ifexists
.RS 4
This option takes the same values as the
\fItrailer\&.ifexists\fR
configuration variable and it overrides what is specified by that option for trailers with the specified <keyAlias>\&.
.RE
.PP
trailer\&.<keyAlias>\&.ifmissing
.RS 4
This option takes the same values as the
\fItrailer\&.ifmissing\fR
configuration variable and it overrides what is specified by that option for trailers with the specified <keyAlias>\&.
.RE
.PP
trailer\&.<keyAlias>\&.command
.RS 4
Deprecated in favor of
\fItrailer\&.<keyAlias>\&.cmd\fR\&. This option behaves in the same way as
\fItrailer\&.<keyAlias>\&.cmd\fR, except that it doesn\(cqt pass anything as argument to the specified command\&. Instead the first occurrence of substring $ARG is replaced by the <value> that would be passed as argument\&.
.sp
Note that $ARG in the user\(cqs command is only replaced once and that the original way of replacing $ARG is not safe\&.
.sp
When both
\fItrailer\&.<keyAlias>\&.cmd\fR
and
\fItrailer\&.<keyAlias>\&.command\fR
are given for the same <keyAlias>,
\fItrailer\&.<keyAlias>\&.cmd\fR
is used and
\fItrailer\&.<keyAlias>\&.command\fR
is ignored\&.
.RE
.PP
trailer\&.<keyAlias>\&.cmd
.RS 4
This option can be used to specify a shell command that will be called once to automatically add a trailer with the specified <keyAlias>, and then called each time a
\fI\-\-trailer <keyAlias>=<value>\fR
argument is specified to modify the <value> of the trailer that this option would produce\&.
.sp
When the specified command is first called to add a trailer with the specified <keyAlias>, the behavior is as if a special
\fI\-\-trailer <keyAlias>=<value>\fR
argument was added at the beginning of the "git interpret\-trailers" command, where <value> is taken to be the standard output of the command with any leading and trailing whitespace trimmed off\&.
.sp
If some
\fI\-\-trailer <keyAlias>=<value>\fR
arguments are also passed on the command line, the command is called again once for each of these arguments with the same <keyAlias>\&. And the <value> part of these arguments, if any, will be passed to the command as its first argument\&. This way the command can produce a <value> computed from the <value> passed in the
\fI\-\-trailer <keyAlias>=<value>\fR
argument\&.
.RE
.SH "EXAMPLES"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Configure a
\fIsign\fR
trailer with a
\fISigned\-off\-by\fR
key, and then add two of these trailers to a commit message file:
.sp
.if n \{\
.RS 4
.\}
.nf
$ git config trailer\&.sign\&.key "Signed\-off\-by"
$ cat msg\&.txt
subject

body text
$ git interpret\-trailers \-\-trailer \*(Aqsign: Alice <alice@example\&.com>\*(Aq \-\-trailer \*(Aqsign: Bob <bob@example\&.com>\*(Aq <msg\&.txt
subject

body text

Signed\-off\-by: Alice <alice@example\&.com>
Signed\-off\-by: Bob <bob@example\&.com>
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Use the
\fB\-\-in\-place\fR
option to edit a commit message file in place:
.sp
.if n \{\
.RS 4
.\}
.nf
$ cat msg\&.txt
subject

body text

Signed\-off\-by: Bob <bob@example\&.com>
$ git interpret\-trailers \-\-trailer \*(AqAcked\-by: Alice <alice@example\&.com>\*(Aq \-\-in\-place msg\&.txt
$ cat msg\&.txt
subject

body text

Signed\-off\-by: Bob <bob@example\&.com>
Acked\-by: Alice <alice@example\&.com>
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Extract the last commit as a patch, and add a
\fICc\fR
and a
\fIReviewed\-by\fR
trailer to it:
.sp
.if n \{\
.RS 4
.\}
.nf
$ git format\-patch \-1
0001\-foo\&.patch
$ git interpret\-trailers \-\-trailer \*(AqCc: Alice <alice@example\&.com>\*(Aq \-\-trailer \*(AqReviewed\-by: Bob <bob@example\&.com>\*(Aq 0001\-foo\&.patch >0001\-bar\&.patch
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Configure a
\fIsign\fR
trailer with a command to automatically add a \*(AqSigned\-off\-by: \*(Aq with the author information only if there is no \*(AqSigned\-off\-by: \*(Aq already, and show how it works:
.sp
.if n \{\
.RS 4
.\}
.nf
$ cat msg1\&.txt
subject

body text
$ git config trailer\&.sign\&.key "Signed\-off\-by: "
$ git config trailer\&.sign\&.ifmissing add
$ git config trailer\&.sign\&.ifexists doNothing
$ git config trailer\&.sign\&.cmd \*(Aqecho "$(git config user\&.name) <$(git config user\&.email)>"\*(Aq
$ git interpret\-trailers \-\-trailer sign <msg1\&.txt
subject

body text

Signed\-off\-by: Bob <bob@example\&.com>
$ cat msg2\&.txt
subject

body text

Signed\-off\-by: Alice <alice@example\&.com>
$ git interpret\-trailers \-\-trailer sign <msg2\&.txt
subject

body text

Signed\-off\-by: Alice <alice@example\&.com>
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Configure a
\fIfix\fR
trailer with a key that contains a
\fI#\fR
and no space after this character, and show how it works:
.sp
.if n \{\
.RS 4
.\}
.nf
$ git config trailer\&.separators ":#"
$ git config trailer\&.fix\&.key "Fix #"
$ echo "subject" | git interpret\-trailers \-\-trailer fix=42
subject

Fix #42
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Configure a
\fIhelp\fR
trailer with a cmd use a script
\fBglog\-find\-author\fR
which search specified author identity from git log in git repository and show how it works:
.sp
.if n \{\
.RS 4
.\}
.nf
$ cat ~/bin/glog\-find\-author
#!/bin/sh
test \-n "$1" && git log \-\-author="$1" \-\-pretty="%an <%ae>" \-1 || true
$ cat msg\&.txt
subject

body text
$ git config trailer\&.help\&.key "Helped\-by: "
$ git config trailer\&.help\&.ifExists "addIfDifferentNeighbor"
$ git config trailer\&.help\&.cmd "~/bin/glog\-find\-author"
$ git interpret\-trailers \-\-trailer="help:Junio" \-\-trailer="help:Couder" <msg\&.txt
subject

body text

Helped\-by: Junio C Hamano <gitster@pobox\&.com>
Helped\-by: Christian Couder <christian\&.couder@gmail\&.com>
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Configure a
\fIref\fR
trailer with a cmd use a script
\fBglog\-grep\fR
to grep last relevant commit from git log in the git repository and show how it works:
.sp
.if n \{\
.RS 4
.\}
.nf
$ cat ~/bin/glog\-grep
#!/bin/sh
test \-n "$1" && git log \-\-grep "$1" \-\-pretty=reference \-1 || true
$ cat msg\&.txt
subject

body text
$ git config trailer\&.ref\&.key "Reference\-to: "
$ git config trailer\&.ref\&.ifExists "replace"
$ git config trailer\&.ref\&.cmd "~/bin/glog\-grep"
$ git interpret\-trailers \-\-trailer="ref:Add copyright notices\&." <msg\&.txt
subject

body text

Reference\-to: 8bc9a0c769 (Add copyright notices\&., 2005\-04\-07)
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Configure a
\fIsee\fR
trailer with a command to show the subject of a commit that is related, and show how it works:
.sp
.if n \{\
.RS 4
.\}
.nf
$ cat msg\&.txt
subject

body text

see: HEAD~2
$ cat ~/bin/glog\-ref
#!/bin/sh
git log \-1 \-\-oneline \-\-format="%h (%s)" \-\-abbrev\-commit \-\-abbrev=14
$ git config trailer\&.see\&.key "See\-also: "
$ git config trailer\&.see\&.ifExists "replace"
$ git config trailer\&.see\&.ifMissing "doNothing"
$ git config trailer\&.see\&.cmd "glog\-ref"
$ git interpret\-trailers \-\-trailer=see <msg\&.txt
subject

body text

See\-also: fe3187489d69c4 (subject of related commit)
.fi
.if n \{\
.RE
.\}
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Configure a commit template with some trailers with empty values (using sed to show and keep the trailing spaces at the end of the trailers), then configure a commit\-msg hook that uses
\fIgit interpret\-trailers\fR
to remove trailers with empty values and to add a
\fIgit\-version\fR
trailer:
.sp
.if n \{\
.RS 4
.\}
.nf
$ cat temp\&.txt
***subject***

***message***

Fixes: Z
Cc: Z
Reviewed\-by: Z
Signed\-off\-by: Z
$ sed \-e \*(Aqs/ Z$/ /\*(Aq temp\&.txt > commit_template\&.txt
$ git config commit\&.template commit_template\&.txt
$ cat \&.git/hooks/commit\-msg
#!/bin/sh
git interpret\-trailers \-\-trim\-empty \-\-trailer "git\-version: \e$(git describe)" "\e$1" > "\e$1\&.new"
mv "\e$1\&.new" "\e$1"
$ chmod +x \&.git/hooks/commit\-msg
.fi
.if n \{\
.RE
.\}
.RE
.SH "SEE ALSO"
.sp
\fBgit-commit\fR(1), \fBgit-format-patch\fR(1), \fBgit-config\fR(1)
.SH "GIT"
.sp
Part of the \fBgit\fR(1) suite
