Spec-Zone.ru › Git

git-annotate

Название

git-annotate — добавление к строкам файла сведений о коммитах

Краткое описание

git annotate [<options>] [<rev-opts>] [<rev>] [--] <file>

Описание

Добавляет к каждой строке указанного файла сведения о коммите, в котором эта строка появилась. Можно также добавить сведения начиная с указанной ревизии.

Единственное различие между этой командой и git-blame[1] состоит в том, что они используют немного разные форматы вывода. Эта команда существует только для обратной совместимости с существующими скриптами и для того, чтобы предоставить более привычное имя команды тем, кто перешёл с других систем управления версиями.

Параметры

-b

Показывать пустой SHA-1 для граничных коммитов. Это также можно настроить с помощью параметра конфигурации blame.blankBoundary.

--root

Не считать корневые коммиты границами. Это также можно настроить с помощью параметра конфигурации blame.showRoot.

--show-stats

Добавлять дополнительную статистику в конец вывода blame.

-L <start>,<end>
-L :<funcname>

Добавлять сведения только к диапазону строк, заданному параметрами <start>,<end>, или регулярным выражением для имени функции <funcname>. Параметр можно указать несколько раз. Перекрывающиеся диапазоны допустимы.

Параметры <start> и <end> необязательны. Диапазон -L <start> или -L <start>, охватывает строки от <start> до конца файла. Диапазон -L ,<end> охватывает строки от начала файла до <end>.

Параметры <start> и <end> могут иметь один из следующих форматов:

  • <number>

    Если <start> или <end> — число, оно задаёт абсолютный номер строки (нумерация начинается с 1).

  • /<regex>/

    В этом формате используется первая строка, соответствующая заданному регулярному выражению POSIX <regex>. Если <start> — регулярное выражение, поиск начинается с конца предыдущего диапазона -L, если он есть, иначе — с начала файла. Если <start> — ^/<regex>/, поиск начинается с начала файла. Если <end> — регулярное выражение, поиск начинается со строки, заданной параметром <start>.

  • +<offset> или -<offset>

    Этот формат допустим только для <end> и задаёт количество строк до или после строки, указанной параметром <start>.

Если вместо <start> и <end> указан параметр :<funcname>, он представляет собой регулярное выражение, задающее диапазон от первой строки имени функции, соответствующей <funcname>, до следующей строки имени функции. Параметр :<funcname> выполняет поиск с конца предыдущего диапазона -L, если он есть, иначе — с начала файла. Параметр ^:<funcname> выполняет поиск с начала файла. Имена функций определяются так же, как команда git diff определяет заголовки фрагментов исправления (см. Defining a custom hunk-header в gitattributes[5]).

-l

Показывать длинную ревизию (по умолчанию: выкл.).

-t

Показывать необработанную временную метку (по умолчанию: выкл.).

-S <revs-file>

Использовать ревизии из <revs-file> вместо вызова git-rev-list[1].

--reverse <start>..<end>

Просматривать историю вперёд, а не назад. Вместо показа ревизии, в которой появилась строка, эта команда показывает последнюю ревизию, в которой строка существовала. Для этого требуется диапазон ревизий, например <start>..<end>, в котором путь, для которого нужно определить авторство, существует в <start>. Для удобства git blame --reverse <start> считается равным git blame --reverse <start>..HEAD.

--first-parent

При обнаружении коммита слияния следовать только за коммитом первого родителя. Этот параметр позволяет определить, когда строка была добавлена в конкретную интеграционную ветку, а не когда она появилась в истории в целом.

-p
--porcelain

Выводить данные в формате, предназначенном для машинной обработки.

--line-porcelain

Использовать формат porcelain, но выводить сведения о коммите для каждой строки, а не только при первом упоминании коммита. Подразумевает --porcelain.

--incremental

Выводить результат постепенно в формате, предназначенном для машинной обработки.

--encoding=<encoding>

Задать кодировку для вывода имён авторов и описаний коммитов. Если указать none, вывод blame будет содержать данные без преобразования. Дополнительную информацию см. в разделе о кодировке на странице руководства git-log[1].

--contents <file>

Добавлять сведения, используя содержимое файла <file>; начать с <rev>, если оно указано, и с HEAD в противном случае. Можно указать -, чтобы команда читала содержимое файла из стандартного ввода.

--date <format>

Задать формат вывода дат. Если --date не указан, используется значение переменной конфигурации blame.date. Если переменная конфигурации blame.date также не задана, используется формат iso. Поддерживаемые значения см. в описании параметра --date на странице git-log[1].

--progress
--no-progress

Включить вывод сведений о ходе выполнения в стандартный поток ошибок, даже если он не подключён к терминалу. По умолчанию сведения о ходе выполнения выводятся только при подключении к терминалу. Нельзя использовать --progress вместе с --porcelain или --incremental.

-M[<num>]

Обнаруживать перемещённые или скопированные строки в пределах файла. Когда коммит перемещает или копирует блок строк (например, исходный файл содержит A, а затем B, и коммит меняет его на B, а затем A), традиционный алгоритм blame обнаруживает только половину перемещения и обычно приписывает строки, перемещённые вверх (то есть B), родительскому коммиту, а строки, перемещённые вниз (то есть A), — дочернему коммиту. С этим параметром обе группы строк приписываются родительскому коммиту за счёт дополнительных проходов анализа.

Параметр <num> необязателен, но задаёт минимальное количество буквенно-цифровых символов, которые Git должен распознать как перемещённые или скопированные в пределах файла, чтобы связать эти строки с родительским коммитом. Значение по умолчанию — 20.

-C[<num>]

В дополнение к -M, обнаруживать строки, перемещённые или скопированные из других файлов, изменённых в том же коммите. Это полезно при реорганизации программы и перемещении кода между файлами. Если указать этот параметр дважды, команда дополнительно ищет копии в других файлах коммита, в котором создан данный файл. Если указать параметр трижды, команда дополнительно ищет копии в других файлах в любом коммите.

Параметр <num> необязателен, но задаёт минимальное количество буквенно-цифровых символов, которые Git должен распознать как перемещённые или скопированные между файлами, чтобы связать эти строки с родительским коммитом. Значение по умолчанию — 40. Если указано несколько параметров -C, учитывается аргумент <num> последнего параметра -C.

--ignore-rev <rev>

Игнорировать изменения, внесённые этой ревизией, при определении авторства, как если бы этих изменений не было. Строки, изменённые или добавленные в игнорируемом коммите, будут приписаны предыдущему коммиту, изменившему эту строку или соседние строки. Этот параметр можно указать несколько раз, чтобы игнорировать несколько ревизий. Если задан параметр конфигурации blame.markIgnoredLines, строки, изменённые в игнорируемом коммите и приписанные другому коммиту, будут отмечены символом ? в выводе blame. Если задан параметр конфигурации blame.markUnblamableLines, строки, затронутые игнорируемым коммитом, авторство которых не удалось приписать другой ревизии, будут отмечены символом *. В режимах porcelain соответствующие строки выводятся как ignored и unblamable.

--ignore-revs-file <file>

Игнорировать ревизии, перечисленные в <file>; формат файла должен совпадать с форматом fsck.skipList. Этот параметр можно указать несколько раз; эти файлы обрабатываются после файлов, заданных параметром конфигурации blame.ignoreRevsFile. Пустое имя файла, "", очистит список ревизий из ранее обработанных файлов.

--color-lines

В формате по умолчанию окрашивать аннотации строк по-разному, если они относятся к тому же коммиту, что и предыдущая строка. Это упрощает различение блоков кода, добавленных разными коммитами. По умолчанию используется голубой цвет; его можно настроить с помощью параметра конфигурации color.blame.repeatedLines.

--color-by-age

В формате по умолчанию окрашивать аннотации строк в зависимости от возраста строки. Параметр конфигурации color.blame.highlightRecent задаёт цвета для каждого возрастного диапазона.

-h

Показать справку.

См. также

git-blame[1]

annotate

© 2005–2026 Linus Torvalds and others
Licensed under the GNU General Public License version 2.
https://git-scm.com/docs/git-annotate

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API