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.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 (<key>|<key-alias>)[(=|:)<value>])…] [--parse] [<file>…]
ОПИС
Додайте або проаналізуйте рядки-«трейлери», схожі на заголовки електронних листів 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», є трейлерами.
Ця команда зчитує повідомлення комітів або з аргументів <file>, або зі стандартного вводу, якщо <file> не вказано. Якщо вказано --parse
, вивід складається з проаналізованих трейлерів, що надходять з вводу, без впливу на них будь-якими параметрами командного рядка чи змінними конфігурації.
В іншому випадку ця команда застосовує змінні конфігурації trailer.*
(які потенційно можуть додавати нові трейлери, а також змінювати їх положення), а також будь-які аргументи командного рядка, які можуть перевизначати змінні конфігурації (такі як --trailer=...
, які також можуть додавати нові трейлери), до кожного вхідного файлу. Результат виводиться на стандартний вивід.
Ця команда також може працювати з виводом git-format-patch[1], який є складнішим, ніж звичайне повідомлення коміту. А саме, такий вивід включає повідомлення коміту (як вище), роздільник "---" та частину патча. Для цих вхідних даних частини роздільника та патча не змінюються цією командою та виводяться на вивід як є, якщо не вказано --no-divider
.
Деякі змінні конфігурації контролюють спосіб застосування аргументів --trailer
до кожного вхідного значення та спосіб зміни будь-якого існуючого трейлера у вхідному значенні. Вони також дозволяють автоматично додавати деякі трейлери.
За замовчуванням аргумент <ключ>=<значення> або <ключ>:<значення>, заданий за допомогою --trailer
, буде додано після існуючих трейлерів, лише якщо останній трейлер має іншу пару (<ключ>, <значення>) (або якщо трейлер відсутній). Частини <ключ> та <значення> будуть обрізані, щоб видалити початкові та кінцеві пробіли, а отримані обрізані <ключ> та <значення> відображатимуться у виводі ось так:
key: value
Це означає, що обрізані <ключ> та <значення> будуть розділені знаком `: ' (одна двокрапка, за якою йде один пробіл).
Для зручності можна налаштувати <key-alias>, щоб скоротити використання --trailer
для введення в командному рядку. Це можна налаштувати за допомогою змінної конфігурації trailer.<key-alias>.key. <keyAlias> має бути префіксом повного рядка <key>, хоча чутливість до регістру не має значення. Наприклад, якщо у вас є
trailer.sign.key "Підписано: "
у вашій конфігурації вам потрібно лише вказати --trailer="sign:
foo"
у командному рядку замість --trailer="Signed-off-by:
foo"
.
За замовчуванням новий трейлер з’явиться в кінці всіх існуючих трейлерів. Якщо існуючого трейлера немає, новий трейлер з’явиться в кінці вхідних даних. Перед новим трейлером буде додано порожній рядок, якщо його ще немає.
Існуючі трейлери витягуються з вхідних даних шляхом пошуку групи з одного або кількох рядків, які (i) є повністю трейлерами, або (ii) містять принаймні один трейлер, згенерований Git або налаштований користувачем, і складаються щонайменше з 25% трейлерів. Групі має передувати один або кілька порожніх (або лише пробілних) рядків. Група має бути або в кінці вхідних даних, або бути останнім рядком без пробілів перед рядком, який починається з --- (за яким йде пробіл або кінець рядка).
Під час читання трейлерів не може бути пробілів перед або всередині <key>, але між <key> та роздільником дозволена будь-яка кількість звичайних пробілів та символів табуляції. Пробіли можуть бути перед, всередині або після <value>. <value> може бути розділений на кілька рядків, причому кожен наступний рядок починається принаймні з одного пробілу, як у випадку з "folding" у RFC 822. Приклад:
ключ: Це дуже довге значення з пробілами та символами нового рядка.
Зверніть увагу, що трейлери не дотримуються (і не призначені для дотримання) багатьох правил для заголовків RFC 822. Наприклад, вони не дотримуються правила кодування.
ОПЦІЇ
- --in-place
-
Відредагуйте файли на місці.
- --trim-empty
-
Якщо частина <value> будь-якого трейлера містить лише пробіли, весь трейлер буде видалено з виводу. Це стосується як існуючих, так і нових трейлерів.
- --trailer <key>[(=|:)<value>]
-
Вкажіть пару (<ключ>, <значення>), яку слід застосувати як трейлер до вхідних даних. Див. опис цієї команди.
- --where <placement>
- --no-where
-
Вкажіть, куди будуть додаватися всі нові трейлери. Налаштування з параметром --where замінює
trailer.where
та будь-які відповідні змінні конфігураціїtrailer.
<keyAlias>.where
і застосовується до всіх параметрів --trailer до наступного виникнення --where або --no-where. У разі виникнення --no-where очистіть дію будь-якого попереднього використання --where, щоб відповідні змінні конфігурації більше не перезаписувалися. Можливі розташування:after
,before
,end
абоstart
. - --if-exists <action>
- --no-if-exists
-
Вкажіть, яка дія буде виконана, якщо у вхідних даних вже є хоча б один трейлер з тим самим <key>. Налаштування, задане за допомогою --if-exists, замінює
trailer.ifExists
та будь-які відповідні змінні конфігураціїtrailer.
<keyAlias>.ifExists
і застосовується до всіх параметрів --trailer до наступного виникнення --if-exists або --no-if-exists. У разі виникнення --no-if-exists, очистіть ефект будь-якого попереднього використання --if-exists, щоб відповідні змінні конфігурації більше не перезаписувалися. Можливі дії:addIfDifferent
,addIfDifferentNeighbor
,add
,replace
таdoNothing
. - --if-missing <action>
- --no-if-missing
-
Вкажіть, яка дія буде виконана, якщо у вхідних даних немає іншого трейлера з тим самим <key>. Налаштування, задане за допомогою --if-missing, замінює
trailer.ifMissing
та будь-які відповідні змінні конфігураціїtrailer.
<keyAlias>.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
-
Не трактуйте
---
як кінець повідомлення коміту. Використовуйте це, коли знаєте, що ваші вхідні дані містять лише саме повідомлення коміту (а не електронну пошту чи вивідgit
format-patch
).
ЗМІННІ КОНФІГУРАЦІЇ
Все, що знаходиться нижче цього рядка в цьому розділі, вибірково включено з документації git-config[1]. Вміст такий самий, як і там:
Warning
|
Missing See original version for this content. |
ПРИКЛАДИ
-
Налаштуйте трейлер «підпис» з ключем «Підписано», а потім додайте два таких трейлери до файлу повідомлення коміту:
$ 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 основний текст Signed-off-by: Alice <alice@example.com> Signed-off-by: Bob <bob@example.com>
-
Використайте опцію
--in-place
для редагування файлу повідомлення коміту на місці:$ cat msg.txt subject основний текст Підписав: Боб <bob@example.com> $ git interpret-trailers --trailer 'Acked-by: Alice <alice@example.com>' --in-place msg.txt $ cat msg.txt subject основний текст Signed-off-by: Bob <bob@example.com> Acked-by: Alice <alice@example.com>
-
Витягніть останній коміт як патч і додайте до нього трейлер «Копія» та «Перевірено»:
$ 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
-
Налаштуйте трейлер «підпису» з командою автоматичного додавання «Підписано:» з інформацією про автора, лише якщо «Підписано:» ще немає, та покажіть, як це працює:
$ 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 'echo "$(git config user.name) <$(git config user.email)>"' $ git interpret-trailers --trailer sign <msg1.txt subject основний текст Signed-off-by: Bob <bob@example.com> $ cat msg2.txt subject основний текст Signed-off-by: Alice <alice@example.com> $ git interpret-trailers --trailer sign <msg2.txt subject основний текст Signed-off-by: Alice <alice@example.com>
-
Налаштуйте трейлер «виправлення» з ключем, що містить символ «#» і не містить пробілу після нього, і покажіть, як це працює:
$ git config trailer.separators ":#" $ git config trailer.fix.key "Fix #" $ echo "subject" | git interpret-trailers --trailer fix=42 subject Виправлення #42
-
Налаштуйте трейлер «довідки» за допомогою командної команди, використовуючи скрипт
glog-find-author
, який шукає вказану особу автора з журналу git у репозиторії git та показує, як це працює:$ 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 основний текст Helped-by: Junio C Hamano <gitster@pobox.com> Helped-by: Christian Couder <christian.couder@gmail.com>
-
Налаштуйте трейлер ref за допомогою командної команди, використовуючи скрипт
glog-grep
для отримання останнього відповідного коміту з журналу git у репозиторії git командою grep та покажіть, як це працює:$ 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 основний текст Reference-to: 8bc9a0c769 (Add copyright notices., 2005-04-07)
-
Налаштуйте трейлер «see» за допомогою команди, яка покаже тему пов’язаного коміту та покаже, як це працює:
$ cat msg.txt subject основний текст 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 основний текст See-also: fe3187489d69c4 (subject of related commit)
-
Налаштуйте шаблон коміту з деякими трейлерами з порожніми значеннями (використовуючи sed для відображення та збереження пробілів у кінці трейлерів), потім налаштуйте гачок commit-msg, який використовує git interpret-trailers для видалення трейлерів з порожніми значеннями та додавання трейлера git-version:
$ cat temp.txt ***subject*** ***повідомлення*** 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]