українська мова ▾ Topics ▾ Latest version ▾ git-notes last updated in 2.50.0

НАЗВА

git-notes — Додавання або перевірка нотаток обʼєктів

СИНОПСИС

git notes [list [<object>]]
git notes add [-f] [--allow-empty] [--[no-]separator | --separator=<paragraph-break>] [--[no-]stripspace] [-F <file> | -m <msg> | (-c | -C) <object>] [-e] [<object>]
git notes copy [-f] ( --stdin | <from-object> [<to-object>] )
git notes append [--allow-empty] [--[no-]separator | --separator=<paragraph-break>] [--[no-]stripspace] [-F <file> | -m <msg> | (-c | -C) <object>] [-e] [<object>]
git notes edit [--allow-empty] [<object>] [--[no-]stripspace]
git notes show [<object>]
git notes merge [-v | -q] [-s <strategy> ] <notes-ref>
git notes merge --commit [-v | -q]
git notes merge --abort [-v | -q]
git notes remove [--ignore-missing] [--stdin] [<object>…​]
git notes prune [-n] [-v]
git notes get-ref

ОПИС

Додає, видаляє або читає нотатки, прикріплені до обʼєктів, не торкаючись самих обʼєктів.

Зазвичай нотатки зберігаються та зчитуються з refs/notes/commits, але цю стандартну поведінку можна змінити. Дивіться розділи ПАРАМЕТРИ, КОНФІГУРАЦІЯ та СЕРЕДОВИЩЕ нижче. Якщо це посилання не існує, воно буде непомітно створено, коли вперше знадобиться для зберігання нотатки.

Типове використання нотаток — доповнення повідомлення коміту без зміни самого коміту. Нотатки можна відобразити за допомогою git log разом з оригінальним повідомленням коміту. Щоб відрізнити ці нотатки від повідомлення, що зберігається в обʼєкті коміту, нотатки мають відступ, як і повідомлення, після рядка без відступу "Notes (<refname>):" (або "Notes:" для refs/notes/commits).

Нотатки також можна додавати до латок, підготовлених за допомогою git format-patch, використовуючи опцію --notes. Такі нотатки додаються як коментар до латки після роздільника з трьох дефісів.

Щоб змінити, які нотатки відображаються git log, дивіться обговорення notes.displayRef у КОНФІГУРАЦІЯ.

Дивіться конфігурацію notes.rewrite.<command> для способу перенесення нотаток між командами, які перезаписують коміти.

ПІДКОМАНДИ

list

Виводить список обʼєктів нотаток для заданого обʼєкта. Якщо обʼєкт не вказано, показує список усіх обʼєктів нотаток та обʼєктів, які вони анотують (у форматі "<обʼєкт-нотатки> <анотований-обʼєкт>"). Це підкоманда є стандартною, якщо підкоманду не вказано.

add

Додає нотатки для заданого обʼєкта (зазвичай HEAD). Переривається, якщо обʼєкт вже має нотатки (використовуйте -f для перезапису наявних нотаток). Однак, якщо ви використовуєте add інтерактивно (використовуючи редактор для надання вмісту нотаток), то замість переривання наявні нотатки будуть відкриті в редакторі (як підкоманда edit). Якщо ви вкажете кілька -m та -F, між повідомленнями буде вставлено порожній рядок. Використовуйте опцію --separator для вставки інших роздільників. Ви можете використовувати -e для інтерактивного редагування та точного налаштування повідомлення(й), наданих з опцій -m та -F, перед додаванням нотатки.

copy

Копіює нотатки з першого обʼєкта на другий обʼєкт (зазвичай HEAD). Переривається, якщо другий обʼєкт вже має нотатки, або якщо перший обʼєкт їх не має (використовуйте -f, щоб перезаписати наявні нотатки на другий обʼєкт). Ця підкоманда еквівалентна: git notes add [-f] -C $(git notes list <з-обʼєкта>) <до-обʼєкта>

У режимі --stdin приймає рядки у форматі

<from-object> SP <to-object> [ SP <rest> ] LF

на стандартному вводі та копіює нотатки з кожного <from-object> до відповідного <to-object>. (Необовʼязковий <rest> ігнорується, щоб команда могла прочитати вхідні дані, передані гачку post-rewrite.)

--stdin не можна поєднувати з іменами обʼєктів, заданими в командному рядку.

append

Додає нове(і) повідомлення(а), задане(і) опціями -m або -F, до наявної нотатки, або додає їх як нову нотатку, якщо такої не існує, для обʼєкта (зазвичай HEAD). Під час додавання до наявної нотатки перед кожним новим повідомленням додається порожній рядок як роздільник між абзацами. Роздільник можна налаштувати за допомогою опції --separator. Редагуйте нотатки, які потрібно додавати, задані опціями -m та -F, за допомогою -e, інтерактивно (за допомогою редактора) перед додаванням нотатки.

edit

Редагування нотатки для вказаного обʼєкта (зазвичай HEAD).

show

Показ нотатки для вказаного обʼєкта (зазвичай HEAD).

merge

Обʼєднання вказаних посилань нотаток у посилання поточної нотатки. Команда спробує обʼєднати зміни, внесені вказаним посиланням на нотатки ("remote") з моменту злиття (якщо такі є), з поточним посиланням на нотатки ("local").

Якщо виникають конфлікти, а стратегія автоматичного вирішення нотаток з конфліктами (див. розділ "СТРАТЕГІЇ ЗЛИТТЯ НОТАТОК") не вказана, використовується manual резолвер. Цей резолвер перевіряє нотатки з конфліктами у спеціальному робочому дереві (.git/NOTES_MERGE_WORKTREE) та доручає користувачеві вручну вирішити конфлікти там. Після завершення користувач може або завершити злиття за допомогою git notes merge --commit, або перервати злиття за допомогою git notes merge --abort.

remove

Видаляє нотатки для вказаних обʼєктів (зазвичай HEAD). Якщо в командному рядку вказано нуль або один обʼєкт, це еквівалентно вказівці порожнього повідомлення нотатки для підкоманди edit.

У режимі --stdin також видаляються імена обʼєктів, що надаються у стандартному вводі. Іншими словами, --stdin можна поєднувати з іменами обʼєктів з командного рядка.

prune

Видаляє всі нотатки для обʼєктів що не існують або які є недоступними.

get-ref

Виводить поточне посилання на нотатки. Це забезпечує простий спосіб отримання поточного посилання на нотатки (наприклад, зі скриптів).

ОПЦІЇ

-f
--force

Під час додавання нотаток до обʼєкта, який уже має нотатки, перезаписує наявні нотатки (замість переривання роботи).

-m <msg>
--message=<повідомлення>

Використовує надане повідомлення нотатки (замість запиту). Якщо задано кілька опцій -m, їхні значення обʼєднуються в окремі абзаци.

-F <файл>
--file=<файл>

Бере повідомлення нотатки з вказаного файлу. Використовуйте -, щоб прочитати повідомлення нотатки зі стандартного вводу.

-C <обʼєкт>
--reuse-message=<обʼєкт>

Використовує зазначений blob-обʼєкт (наприклад, іншу нотатку) як повідомлення нотатки. (Використовуйте git notes copy <object> для копіювання нотаток між обʼєктами.) Мається на увазі --no-stripspace, оскільки стандартна поведінка полягає в дослівному копіюванні повідомлення.

-c <обʼєкт>
--reedit-message=<обʼєкт>

Подібно до -C, але з -c викликається редактор, щоб користувач міг додатково редагувати повідомлення нотатки.

--allow-empty

Дозволяє збереження порожнього обʼєкта нотатки. Стандартна поведінка — автоматичне видалення порожніх нотаток.

--separator=<paragraph-break>
--separator
--no-separator

Визначає рядок, який використовуватиметься як власний роздільник між абзацами (за потреби в кінці додається символ нового рядка). У випадку --no-separator, роздільники між абзацами не додаватимуться. Типово використовується порожній рядок.

--stripspace
--no-stripspace

Очищення від пробілів. Зокрема (див. git-stripspace[1]):

  • видаляє пробіли в кінці всіх рядків

  • згортає кілька послідовних порожніх рядків в один порожній рядок

  • видаляє порожні рядки на початку та в кінці вхідних даних

  • за потреби додає відсутній символ \n до останнього рядка.

--stripspace є стандартною поведінкою, за винятком -C/--reuse-message. Однак майте на увазі, що це залежить від порядку подібних опцій. Наприклад, для -C <обʼєкт> -m<повідомлення> буде використано --stripspace, оскільки стандартне значення для -m замінює попереднє -C. Це відоме обмеження, яке може бути виправлено в майбутньому.

--ref=<ref>

Керування деревом нотаток у <ref>. Замінює GIT_NOTES_REF та конфігурацію core.notesRef. Посилання вказує повну назву посилання, якщо воно починається з refs/notes/; якщо воно починається з notes/, то refs/, а в іншому випадку, для формування повної назви посилання додається префікс refs/notes/.

--ignore-missing

Не вважати помилкою запит на видалення нотаток з обʼєкта, у якого немає нотаток.

--stdin

Є дійсним лише для remove та copy. Див. відповідні підкоманди.

-n
--dry-run

Не видаляє нічого; просто повідомляє назви обʼєктів, нотатки яких будуть видалені.

-s <стратегія>
--strategy=<стратегія>

Під час об’єднання нотаток розвʼязує конфлікти нотаток, використовуючи задану стратегію. Розпізнаються такі стратегії: manual (стандартно), ours, theirs, union та cat_sort_uniq. Цей параметр замінює налаштування конфігурації notes.mergeStrategy. Див. розділ «СТРАТЕГІЇ ОБʼЄДНАННЯ НОТАТОК» нижче для отримання додаткової інформації про кожну стратегію обʼєднання нотаток.

--commit

Завершує поточне злиття git notes merge. Використовуйте цю опцію, коли ви розвʼязали конфлікти, які git notes merge зберігає в .git/NOTES_MERGE_WORKTREE. Виправляє коміт часткового злиття, створений git notes merge (зберігається в .git/NOTES_MERGE_PARTIAL), додаючи нотатки в .git/NOTES_MERGE_WORKTREE. Посилання на нотатки, що зберігається в symref .git/NOTES_MERGE_REF, оновлюється до результуючого коміту.

--abort

Перериває роботу/скидає злиття в процесі git notes merge, тобто коли відбувається злиття нотаток з конфліктами. Просто видаляє всі файли, повʼязані зі злиттям нотаток.

-q
--quiet

Під час обʼєднання нотаток працює тихо.

-v
--verbose

Під час об’єднання нотаток будьте докладнішими. Під час видалення нотаток повідомляйте про всі назви об’єктів, нотатки яких видалено.

ОБГОВОРЕННЯ

Нотатки коміту — це блоби, що містять додаткову інформацію про обʼєкт (зазвичай інформацію, що доповнює повідомлення коміту). Ці блоби беруться з посилань на нотатки. Посилання на нотатки зазвичай є гілкою, яка містить «файли», шляхи до яких є іменами обʼєктів, які вони описують, з деякими роздільниками тек, включеними з міркувань продуктивності (примітка: [Дозволені шляхи мають вигляд bf/fe/30/…​/680d5a…​: послідовність імен тек з двох шістнадцяткових цифр кожна, за якими йде імʼя файлу з рештою ідентифікатора обʼєкта.].

Кожна зміна нотаток створює новий коміт за вказаним посиланням на нотатки. Таким чином, ви можете перевірити історію нотаток, викликавши, наприклад, git log -p notes/commits. Наразі повідомлення про коміт записує лише те, яка операція викликала оновлення, а авторство коміта визначається відповідно до звичайних правил (див. git-commit[1]). Ці деталі можуть змінитися в майбутньому.

Також дозволено, щоб посилання на нотатки вказувало безпосередньо на обʼєкт дерева, і в цьому випадку історію нотаток можна прочитати за допомогою git log -p -g <refname>.

СТРАТЕГІЇ ОБʼЄДНАННЯ НОТАТОК

Стандартною стратегією обʼєднання нотаток є manual, яка перевіряє нотатки з конфліктами у спеціальному робочому дереві для вирішення конфліктів нотаток (.git/NOTES_MERGE_WORKTREE) та дає користувачеві інструкції щодо розвʼязання конфліктів у цьому робочому дереві. Після завершення користувач може або завершити обʼєднання за допомогою git notes merge --commit, або перервати його за допомогою git notes merge --abort.

Користувачі можуть вибрати стратегію автоматичного обʼєднання з наступних, використовуючи опцію -s/--strategy або налаштувавши notes.mergeStrategy відповідно:

ours автоматично розвʼязує конфліктні нотатки на користь локальної версії (тобто поточного посилання на нотатки).

theirs автоматично розвʼязує конфлікти нотаток на користь віддаленої версії (тобто вказане посилання на нотатки обʼєднується з поточним посиланням на нотатки).

union автоматично розвʼязує конфлікти нотаток шляхом обʼєднання локальної та віддаленої версій.

cat_sort_uniq схожа на union, але окрім обʼєднання локальної та віддаленої версій, ця стратегія також сортує результуючі рядки та видаляє дублікати рядків з результату. Це еквівалентно застосуванню конвеєра оболонки "cat | sort | uniq" до локальної та віддаленої версій. Ця стратегія корисна, якщо нотатки дотримуються формату на основі рядків, де потрібно уникнути дублікатів рядків у результаті злиття. Зверніть увагу, що якщо локальна або віддалена версія містять дублікати рядків до злиття, вони також будуть видалені цією стратегією злиття нотаток.

ПРИКЛАДИ

Ви можете використовувати нотатки, щоб додавати анотації з інформацією, яка не була доступна на момент написання опису коміту.

$ git notes add -m 'Tested-by: Johannes Sixt <j6t@kdbg.org>' 72a144e2
$ git show -s 72a144e
[...]
    Signed-off-by: Junio C Hamano <gitster@pobox.com>

Notes:
    Tested-by: Johannes Sixt <j6t@kdbg.org>

В принципі, нотатка — це звичайний Git-блоб, і приймається будь-який (не)формат. Ви можете безпечно створювати нотатки з довільних файлів у бінарному коді за допомогою git hash-object:

$ cc *.c
$ blob=$(git hash-object -w a.out)
$ git notes --ref=built add --allow-empty -C "$blob" HEAD

(Ви не можете просто використовувати git notes --ref=built add -F a.out HEAD, оскільки це небезпечно для двійкового коду.) Звичайно, немає сенсу відображати нотатки у нетекстовому форматі за допомогою git log, тому, якщо ви використовуєте такі нотатки, вам, ймовірно, доведеться написати спеціальні інструменти, щоб зробити з ними щось корисне.

КОНФІГУРАЦІЯ

core.notesRef

Посилання на нотатки для читання та маніпулювання замість refs/notes/commits. Має бути нескороченим імʼям посилання. Цей параметр можна змінити через середовище та командний рядок.

Все, що знаходиться вище цього рядка в цьому розділі, не включено до документації git-config[1]. Наступний вміст такий самий, як і той, що знаходиться там:

notes.mergeStrategy

Яку стратегію обʼєднання вибрати у якості стандартної під час розвʼязання конфліктів у нотатках. Може бути одним зі значень: manual, ours, theirs, union або cat_sort_uniq. Стандартним значенням є manual. Докладнішу інформацію про кожну стратегію див. у розділі «СТРАТЕГІЇ ОБ’ЄДНАННЯ НОТАТОК» документації git-notes[1].

Цю настройку можна замінити, передавши параметр --strategy у командному рядку git-notes[1].

notes.<name>.mergeStrategy

Яку стратегію злиття обрати під час злиття нотаток у refs/notes/<name>. Цей параметр замінює більш загальний параметр notes.mergeStrategy. Докладнішу інформацію про доступні стратегії див. у розділі «СТРАТЕГІЇ ЗЛИТТЯ НОТАТОК» в git-notes[1].

notes.displayRef

Який ref (або refs, якщо вказано загальний параметр або кілька разів), крім стандартного, заданого за допомогою core.notesRef або GIT_NOTES_REF, слід використовувати для зчитування приміток під час показу повідомлень про коміти за допомогою команд із сімейства git log.

Це налаштування можна замінити за допомогою змінної середовища GIT_NOTES_DISPLAY_REF, яка має містити список ref або glob, розділених двокрапкою.

Для посилань, яких не існує, буде видано попередження, але глобальний обʼєкт, який не відповідає жодному посиланню, буде проігнорований.

Це налаштування можна вимкнути за допомогою опції --no-notes у сімействі команд git-log[1] або за допомогою опції --notes=<ref>, яку підтримують ці команди.

Фактичне значення core.notesRef (яке, можливо, замінено GIT_NOTES_REF) також неявним чином додається до списку refs для показу.

notes.rewrite.<command>

Під час перезапису комітів за допомогою <команди> (наразі amend або rebase), якщо ця змінна має значення false, git не копіюватиме примітки з оригінального коміту до перезаписаного. Стандартне значення — true. Див. також notes.rewriteRef нижче.

Це налаштування можна замінити за допомогою змінної середовища GIT_NOTES_REWRITE_REF, яка має містити список refs або globs, розділених двокрапкою.

notes.rewriteMode

Під час копіювання приміток під час перезапису (див. опцію notes.rewrite.<command>) визначає, що робити, якщо цільовий коміт уже містить примітку. Може приймати значення overwrite, concatenate, cat_sort_uniq або ignore. Стандартним значенням є concatenate.

Це налаштування можна замінити за допомогою змінної середовища GIT_NOTES_REWRITE_MODE.

notes.rewriteRef

Під час копіювання нотаток у процесі перезапису цей параметр визначає (повністю кваліфікований) ref, нотатки якого слід скопіювати. Він може мати вигляд шаблону, і в цьому випадку будуть скопійовані нотатки з усіх відповідних ref. Цей параметр можна вказати кілька разів.

Ця змінна не має стандартного значення; щоб увімкнути перезапис приміток, її потрібно налаштувати. Встановіть для неї значення refs/notes/commits, щоб увімкнути перезапис стандартних приміток до комітів.

Це значення можна замінити за допомогою змінної середовища GIT_NOTES_REWRITE_REF. Детальніше про формат цієї змінної див. у розділі notes.rewrite.<command> вище.

НАВКОЛИШНЄ СЕРЕДОВИЩЕ

GIT_NOTES_REF

З якого посилання маніпулювати нотатками, замість refs/notes/commits. Це замінює налаштування core.notesRef.

GIT_NOTES_DISPLAY_REF

Список посилань або глобальних елементів, розділених двокрапками, що вказує, з яких посилань, окрім стандартного значення core.notesRef або GIT_NOTES_REF, зчитувати нотатки під час відображення повідомлень комітів. Замінює налаштування notes.displayRef.

Для посилань, яких не існує, буде видано попередження, але глобальний обʼєкт, який не відповідає жодному посиланню, буде проігнорований.

GIT_NOTES_REWRITE_MODE

Що робити, якщо цільовий коміт вже має нотатку під час копіювання нотаток під час перезапису? Має бути одне з налаштувань overwrite, concatenate, cat_sort_uniq або ignore. Замінює налаштування core.rewriteMode.

GIT_NOTES_REWRITE_REF

Під час переписування комітів, які нотатки копіювати з оригіналу до переписаного коміту. Має бути список посилань або глобів, розділених двокрапками.

Якщо не встановлено в середовищі, список нотаток для копіювання залежить від налаштувань notes.rewrite.<команда> та notes.rewriteRef.

GIT

Частина набору git[1]