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.50.1 → 2.51.1 no changes
-
2.50.0
2025-06-16
- 2.49.1 no changes
-
2.49.0
2025-03-14
- 2.48.1 → 2.48.2 no changes
-
2.48.0
2025-01-10
- 2.44.1 → 2.47.3 no changes
-
2.44.0
2024-02-23
- 2.43.1 → 2.43.7 no changes
-
2.43.0
2023-11-20
- 2.42.1 → 2.42.4 no changes
-
2.42.0
2023-08-21
- 2.38.1 → 2.41.3 no changes
-
2.38.0
2022-10-02
- 2.29.1 → 2.37.7 no changes
-
2.29.0
2020-10-19
- 2.25.1 → 2.28.1 no changes
-
2.25.0
2020-01-13
- 2.22.1 → 2.24.4 no changes
-
2.22.0
2019-06-07
- 2.19.1 → 2.21.4 no changes
-
2.19.0
2018-09-10
- 2.17.0 → 2.18.5 no changes
-
2.16.6
2019-12-06
- 2.15.4 no changes
-
2.14.6
2019-12-06
- 2.10.5 → 2.13.7 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.4.12 → 2.5.6 no changes
-
2.3.10
2015-09-28
- 2.1.4 → 2.2.3 no changes
-
2.0.5
2014-12-17
СИНОПСИС
gitnotes[list[<object>]]gitnotesadd[-f] [--allow-empty] [--[no-]separator|--separator=<paragraph-break>] [--[no-]stripspace] [-F<file> |-m<msg> | (-c|-C) <object>] [-e] [<object>]gitnotescopy[-f] (--stdin| <from-object> [<to-object>] )gitnotesappend[--allow-empty] [--[no-]separator|--separator=<paragraph-break>] [--[no-]stripspace] [-F<file> |-m<msg> | (-c|-C) <object>] [-e] [<object>]gitnotesedit[--allow-empty] [<object>] [--[no-]stripspace]gitnotesshow[<object>]gitnotesmerge[-v|-q] [-s<strategy> ] <notes-ref>gitnotesmerge--commit[-v|-q]gitnotesmerge--abort[-v|-q]gitnotesremove[--ignore-missing] [--stdin] [<object>…]gitnotesprune[-n] [-v]gitnotesget-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 -
Об’єднати задане посилання на нотатки з поточним посиланням на нотатки. Це спробує об’єднати зміни, внесені заданим посиланням на нотатки (так званим "віддаленим") з моменту злиття (якщо такі є), з поточним посиланням на нотатки (так званим "локальним").
Якщо виникають конфлікти, а стратегія автоматичного вирішення конфліктуючих нотаток (див. розділ "СТРАТЕГІЇ ЗЛИТТЯ НОТАТОК") не вказана, використовується
manualresolver. Цей resolver перевіряє конфліктуючі нотатки у спеціальному робочому дереві (.git/NOTES_MERGE_WORKTREE) та доручає користувачеві вручну вирішити конфлікти там. Після завершення користувач може або завершити злиття за допомогоюgitnotesmerge--commit, або перервати злиття за допомогоюgitnotesmerge--abort. -
remove -
Видалити нотатки для заданих об’єктів (за замовчуванням
HEAD). Якщо в командному рядку вказано нуль або один об’єкт, це еквівалентно вказівці порожнього повідомлення нотатки для підкомандиedit.У режимі
--stdinтакож видаляти імена об’єктів, що надаються у стандартному вводі. Іншими словами,--stdinможна поєднувати з іменами об’єктів з командного рядка. -
prune -
Видалити всі нотатки для неіснуючих/недоступних об’єктів.
-
get-ref -
Вивести поточне посилання на нотатки. Це забезпечує простий спосіб отримання поточного посилання на нотатки (наприклад, зі скриптів).
ОПЦІЇ
-
-f -
--force -
Під час додавання нотаток до об’єкта, який уже має нотатки, перезапишіть існуючі нотатки (замість переривання).
-
-m<msg> -
--message=<повідомлення> -
Використовувати надане повідомлення примітки (замість запиту). Якщо задано кілька опцій
-m, їхні значення об’єднуються в окремі абзаци. -
-F<файл> -
--file=<файл> -
Візьміть повідомлення примітки з заданого файлу. Використайте
-, щоб прочитати повідомлення примітки зі стандартного вводу. - -C <об'єкт>
- --reuse-message=<об'єкт>
-
Візьміть заданий blob-об’єкт (наприклад, іншу нотатку) як повідомлення нотатки. (Використовуйте
gitnotescopy<object> для копіювання нотаток між об’єктами.) Має на увазі--no-stripspace, оскільки поведінка за замовчуванням полягає в дослівному копіюванні повідомлення. - -c <об'єкт>
-
--reedit-message=<object> -
Подібно до
-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 -
Завершити поточне злиття
gitnotesmerge. Використовуйте цю опцію, коли ви вирішили конфлікти, якіgitnotesmergeзберігаються в.git/NOTES_MERGE_WORKTREE. Це виправляє коміт часткового злиття, створенийgitnotesmerge(зберігається в.git/NOTES_MERGE_PARTIAL), додаючи нотатки в.git/NOTES_MERGE_WORKTREE. Посилання на нотатки, що зберігається в symref.git/NOTES_MERGE_REF, оновлюється до результуючого коміту. -
--abort -
Перервати/скинути поточне
gitnotesmerge, тобто злиття нотаток з конфліктами. Це просто видаляє всі файли, пов’язані зі злиттям нотаток. -
-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
[...]
Підписав: Хуніо К. Хамано <gitster@pobox.com>
Примітки:
Перевірено: 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, тому, якщо ви використовуєте такі нотатки, вам, ймовірно, доведеться написати спеціальні інструменти, щоб зробити з ними щось корисне.
КОНФІГУРАЦІЯ
Все, що знаходиться вище цього рядка в цьому розділі, не включено до документації git-config[1]. Наступний вміст такий самий, як і той, що знаходиться там:
|
Warning
|
Missing See original version for this content. |
НАВКОЛИШНЄ СЕРЕДОВИЩЕ
-
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]