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.54.0
2026-04-20
- 2.51.2 → 2.53.0 no changes
-
2.51.1
2025-10-15
- 2.49.1 → 2.51.0 no changes
-
2.49.0
2025-03-14
- 2.45.1 → 2.48.2 no changes
-
2.45.0
2024-04-29
- 2.43.1 → 2.44.4 no changes
-
2.43.0
2023-11-20
- 2.42.1 → 2.42.4 no changes
-
2.42.0
2023-08-21
- 2.41.1 → 2.41.3 no changes
-
2.41.0
2023-06-01
- 2.39.1 → 2.40.4 no changes
-
2.39.0
2022-12-12
- 2.38.1 → 2.38.5 no changes
-
2.38.0
2022-10-02
- 2.32.1 → 2.37.7 no changes
-
2.32.0
2021-06-06
- 2.22.1 → 2.31.8 no changes
-
2.22.0
2019-06-07
- 2.19.3 → 2.21.4 no changes
-
2.19.2
2018-11-21
- 2.19.1 no changes
-
2.19.0
2018-09-10
- 2.18.1 → 2.18.5 no changes
-
2.18.0
2018-06-21
- 2.17.0 → 2.17.6 no changes
-
2.16.6
2019-12-06
-
2.15.4
2019-12-06
- 2.14.6 no changes
-
2.13.7
2018-05-22
- 2.12.5 no changes
-
2.11.4
2017-09-22
- 2.10.5 no changes
-
2.9.5
2017-07-30
-
2.8.6
2017-07-30
- 2.7.6 no changes
-
2.6.7
2017-05-05
- 2.3.10 → 2.5.6 no changes
-
2.2.3
2015-09-04
НАЗВАНИЕ
git-interpret-trailers - Добавление или разбор структурированной информации в сообщениях коммита
ОБЗОР
git interpret-trailers [--in-place] [--trim-empty] [(--trailer (<ключ>|<псевдоним-ключа>)[(=|:)<значение>])…] [--parse] [<файл>…]
ОПИСАНИЕ
Добавляет или анализирует строки завершителей, которые выглядят похоже на заголовки электронной почты RFC 822, в конце в остальном свободной части сообщения коммита. Например, в следующем сообщении коммита
заголовок 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", являются завершителями.
Эта команда читает сообщения коммитов из аргументов <файл> или из стандартного ввода, если <файл> не указан. Если указан --parse, вывод состоит из проанализированных завершителей из входных данных, без влияния на них каких-либо параметров командной строки или переменных конфигурации.
В противном случае эта команда применяет переменные конфигурации trailer.* (которые могут добавлять новые завершители, а также перемещать их), а также любые аргументы командной строки, которые могут переопределять переменные конфигурации (например, --trailer=..., который также может добавлять новые завершители), к каждому входному файлу. Результат выводится в стандартный вывод.
Эта команда также может работать с выводом git-format-patch[1], который является более сложным, чем простое сообщение коммита. А именно, такой вывод включает сообщение коммита (как выше), разделительную строку "---" и часть с патчем. Для этих входных данных разделитель и часть с патчем не изменяются этой командой и выводятся как есть, если не указан --no-divider.
Некоторые переменные конфигурации управляют тем, как аргументы --trailer применяются к каждому входному файлу и как изменяются любые существующие завершители во входных данных. Они также позволяют автоматически добавлять некоторые завершители.
По умолчанию аргумент <ключ>=<значение> или <ключ>:<значение>, указанный с помощью --trailer, будет добавлен после существующих завершителей, только если последний завершитель имеет другую пару (<ключ>, <значение>) (или если нет существующего завершителя). Части <ключ> и <значение> будут обрезаны для удаления начальных и конечных пробелов, и результирующие обрезанные <ключ> и <значение> будут отображаться в выводе следующим образом:
ключ: значение
Это означает, что обрезанные <ключ> и <значение> будут разделены : (одно двоеточие, за которым следует один пробел).
Для удобства можно настроить <псевдоним-ключа>, чтобы сделать использование --trailer короче для ввода в командной строке. Это можно настроить с помощью переменной конфигурации trailer.<псевдоним-ключа>.key. <псевдоним-ключа> должен быть префиксом полной строки <ключа>, хотя регистр не имеет значения. Например, если у вас есть
trailer.sign.key "Signed-off-by: "
в вашей конфигурации, вам нужно указать --trailer="sign: foo" в командной строке вместо --trailer="Signed-off-by: foo".
По умолчанию новый завершитель будет отображаться в конце всех существующих завершителей. Если существующих завершителей нет, новый завершитель будет отображаться в конце входных данных. Пустая строка будет добавлена перед новым завершителем, если её ещё нет.
Существующие завершители извлекаются из входных данных путём поиска группы из одной или нескольких строк, которая (i) полностью состоит из завершителей, или (ii) содержит по крайней мере один сгенерированный Git или настроенный пользователем завершитель и состоит из не менее чем 25% завершителей. Группе должны предшествовать одна или несколько пустых (или состоящих только из пробелов) строк. Группа должна находиться либо в конце входных данных, либо быть последними не пробельными строками перед строкой, начинающейся с --- (за которой следует пробел или конец строки).
При чтении завершителей перед <ключом> или внутри него не может быть пробелов, но любое количество обычных пробелов и символов табуляции допускается между <ключом> и разделителем. Пробелы могут быть до, внутри или после <значения>. <значение> может быть разбито на несколько строк, причём каждая последующая строка начинается по крайней мере с одного пробела, как "свёртывание" в RFC 822. Пример:
ключ: Это очень длинное значение, с пробелами и переводами строк в нём.
Обратите внимание, что завершители не следуют (и не предназначены для следования) многим правилам для заголовков RFC 822. Например, они не следуют правилу кодирования.
ПАРАМЕТРЫ
- --in-place
-
Редактировать файлы на месте.
- --trim-empty
-
Если часть <значение> любого завершителя содержит только пробелы, весь завершитель будет удалён из вывода. Это относится как к существующим, так и к новым завершителям.
- --trailer <ключ>[(=|:)<значение>]
-
Указывает пару (<ключ>, <значение>), которая должна быть применена как завершитель к входным данным. См. описание этой команды.
- --where <размещение>
- --no-where
-
Указывает, где будут добавлены все новые завершители. Настройка, указанная с --where, переопределяет переменные конфигурации
trailer.whereи любые применимыеtrailer.<псевдоним-ключа>.whereи применяется ко всем параметрам --trailer до следующего появления --where или --no-where. При обнаружении --no-where очищает эффект любого предыдущего использования --where, так что соответствующие переменные конфигурации больше не переопределяются. Возможные размещения:after,before,endилиstart. - --if-exists <действие>
- --no-if-exists
-
Указывает, какое действие будет выполнено, когда во входных данных уже есть по крайней мере один завершитель с тем же <ключом>. Настройка, указанная с --if-exists, переопределяет переменные конфигурации
trailer.ifExistsи любые применимыеtrailer.<псевдоним-ключа>.ifExistsи применяется ко всем параметрам --trailer до следующего появления --if-exists или --no-if-exists. При обнаружении --no-if-exists очищает эффект любого предыдущего использования --if-exists, так что соответствующие переменные конфигурации больше не переопределяются. Возможные действия:addIfDifferent,addIfDifferentNeighbor,add,replaceиdoNothing. - --if-missing <действие>
- --no-if-missing
-
Указывает, какое действие будет выполнено, когда во входных данных нет другого завершителя с тем же <ключом>. Настройка, указанная с --if-missing, переопределяет переменные конфигурации
trailer.ifMissingи любые применимыеtrailer.<псевдоним-ключа>.ifMissingи применяется ко всем параметрам --trailer до следующего появления --if-missing или --no-if-missing. При обнаружении --no-if-missing очищает эффект любого предыдущего использования --if-missing, так что соответствующие переменные конфигурации больше не переопределяются. Возможные действия:doNothingилиadd. - --only-trailers
-
Выводить только завершители, а не любые другие части входных данных.
- --only-input
-
Выводить только завершители, которые существуют во входных данных; не добавлять никаких из командной строки или путём применения переменных конфигурации
trailer.*. - --unfold
-
Если завершитель имеет значение, которое занимает несколько строк (так называемое "свёрнутое"), переформатировать значение в одну строку.
- --parse
-
Удобный псевдоним для
--only-trailers--only-input--unfold. Это упрощает просмотр только завершителей из входных данных без влияния на них каких-либо параметров командной строки или переменных конфигурации, а также делает вывод удобным для машинной обработки с помощью --unfold. - --no-divider
-
Не обрабатывать
---как конец сообщения коммита. Используйте это, когда вы знаете, что ваши входные данные содержат только само сообщение коммита (а не письмо или выводgitformat-patch).
ПЕРЕМЕННЫЕ КОНФИГУРАЦИИ
Дальнейшее содержание этого раздела, повторяет то, что может быть найдено в git-config[1]:
|
Warning
|
Missing See original version for this content. |
ПРИМЕРЫ
-
Настроить завершитель sign с ключом Signed-off-by, а затем добавить два таких завершителя в файл сообщения коммита:
$ git config trailer.sign.key "Signed-off-by" $ cat msg.txt тема текст тела $ git interpret-trailers --trailer 'sign: Alice <alice@example.com>' --trailer 'sign: Bob <bob@example.com>' <msg.txt тема текст тела Signed-off-by: Alice <alice@example.com> Signed-off-by: Bob <bob@example.com>
-
Используйте параметр
--in-placeдля редактирования файла сообщения коммита на месте:$ cat msg.txt тема текст тела Signed-off-by: Bob <bob@example.com> $ git interpret-trailers --trailer 'Acked-by: Alice <alice@example.com>' --in-place msg.txt $ cat msg.txt тема текст тела Signed-off-by: Bob <bob@example.com> Acked-by: Alice <alice@example.com>
-
Извлечь последний коммит как патч и добавить к нему завершитель Cc и Reviewed-by:
$ git format-patch -1 0001-foo.patch $ git interpret-trailers --trailer 'Cc: Alice <alice@example.com>' --trailer 'Reviewed-by: Bob <bob@example.com>' 0001-foo.patch >0001-bar.patch
-
Настроить завершитель sign с командой для автоматического добавления 'Signed-off-by: ' с информацией об авторе, только если ещё нет 'Signed-off-by: ', и показать, как это работает:
$ cat msg1.txt тема текст тела $ 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 'echo "$(git config user.name) <$(git config user.email)>"' $ git interpret-trailers --trailer sign <msg1.txt тема текст тела Signed-off-by: Bob <bob@example.com> $ cat msg2.txt тема текст тела Signed-off-by: Alice <alice@example.com> $ git interpret-trailers --trailer sign <msg2.txt тема текст тела Signed-off-by: Alice <alice@example.com>
-
Настроить завершитель fix с ключом, содержащим #, без пробела после этого символа, и показать, как это работает:
$ git config trailer.separators ":#" $ git config trailer.fix.key "Fix #" $ echo "тема" | git interpret-trailers --trailer fix=42 тема Fix #42
-
Настроить завершитель help с командой, использующей сценарий
glog-find-author, который ищет указанную личность автора в git log в репозитории git, и показать, как это работает:$ cat ~/bin/glog-find-author #!/bin/sh test -n "$1" && git log --author="$1" --pretty="%an <%ae>" -1 || true $ cat msg.txt тема текст тела $ 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 тема текст тела Helped-by: Junio C Hamano <gitster@pobox.com> Helped-by: Christian Couder <christian.couder@gmail.com>
-
Настроить завершитель ref с командой, использующей сценарий
glog-grepдля поиска последнего соответствующего коммита в git log в репозитории git, и показать, как это работает:$ cat ~/bin/glog-grep #!/bin/sh test -n "$1" && git log --grep "$1" --pretty=reference -1 || true $ cat msg.txt тема текст тела $ 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 тема текст тела Reference-to: 8bc9a0c769 (Add copyright notices., 2005-04-07)
-
Настроить завершитель see с командой для отображения темы связанного коммита и показать, как это работает:
$ cat msg.txt тема текст тела 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 тема текст тела See-also: fe3187489d69c4 (тема связанного коммита)
-
Настроить шаблон коммита с некоторыми завершителями с пустыми значениями (используя sed для отображения и сохранения конечных пробелов в конце завершителей), затем настроить хук commit-msg, который использует git interpret-trailers для удаления завершителей с пустыми значениями и добавления завершителя git-version:
$ cat temp.txt ***тема*** ***сообщение*** Fixes: Z Cc: Z Reviewed-by: Z Signed-off-by: Z $ sed -e 's/ Z$/ /' 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: \$(git describe)" "\$1" > "\$1.new" mv "\$1.new" "\$1" $ chmod +x .git/hooks/commit-msg
GIT
Является частью пакета git[1]