Git
Русский ▾ Topics ▾ Latest version ▾ git-annotate last updated in 2.41.0

НАЗВАНИЕ

git-annotate - Аннотирование строк файла информацией о коммитах

ОБЗОР

git annotate [<параметры>] [<параметры-rev-list>] [<редакция>] [--] <файл>

ОПИСАНИЕ

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

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

ПАРАМЕТРЫ

-b

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

--root

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

--show-stats

Включить дополнительную статистику в конец вывода информации об авторах изменений (blame).

-L <начало>,<конец>
-L :<имя-функции>

Вывести аннотацию только для диапазона строк от <начала> и до <конца>» или для функции, заданной регулярным выражением «<имя-функции>». Может быть указан несколько раз. Диапазоны могут перекрывать друг друга.

<начало> и <конец> являются необязательными. -L <начало> или -L <начало>, охватывает диапазон от <начала> до конца файла; -L ,<конец> — от начала до <конца>.

аттрибуты <начало> и <конец> могут принимать одну из следующих форм:

  • число

    Если <начало> или <конец> — это число, оно указывает порядковый номер строки (нумерация строк начинается с 1).

  • /регулярное-выражение/

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

  • +смещение или -смещение

    Использование этой формы допустимо только для <конца>. Она задаёт количество строк до или после строки, указанной в <начале>.

Если вместо <начало> и <конца> передано :<имя-функции>, то это обозначает диапазон от первой строки, которая сопоставляется регулярному выражению <имя-функции>, до следующей строки c именем функции. С :<имя-функции> поиск будет осуществляться с конца предыдущего диапазона, заданного в -L, если таковой имеется, в противном случае — с начала файла. С ^:<имя-функции> поиск всегда будет производиться с начала файла. Является ли строка именем функции определяются так же, как git diff определяет заголовки блоков патчей (см. раздел «Определение пользовательских заголовков блоков патчей» в gitattributes[5]).

-l

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

-t

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

-S <revs-file>

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

--reverse <редакция>..<редакция>

Идти вперёд по историю, а не назад. Вместо того, чтобы показать, в какой редакции появилась строка, с этим параметром будет показана последня редакция, в которой строка всё ещё существовала. Для этого требуется указать диапазон редакций в виде НАЧАЛО..КОНЕЦ, где путь для которого будут искаться изменения существует в НАЧАЛЕ. Для удобства, git blame --reverse НАЧАЛО работает как git blame --reverse НАЧАЛО..HEAD.

--first-parent

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

-p
--porcelain

Выводить информацию в формате для программного разбора.

--line-porcelain

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

--incremental

Выводить информацию в формате для программного разбора сразу по мере её поступления.

--encoding=<кодировка>

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

--contents <файл>

Вывести аннотацию, используя содержимое из указанного файла, начиная с <редакции> (если она задана, иначе с HEAD). Вы можете передать «-» в качастве имени файла, чтобы команда читала из стандартного ввода.

--date <формат>

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

--[no-]progress

По умолчанию информация о ходе выполнения выводится в стандартный поток ошибок, когда он привязан к терминалу. Этот флаг позволяет выводить эту информацию, даже когда он привязан не к терминалу. Использовать --progress совместно с --porcelain или --incremental невозможно.

-M[<число>]

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

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

-C[<число>]

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

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

--ignore-rev <редакция>

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

--ignore-revs-file <file>

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

--color-lines

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

--color-by-age

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

-h

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

СМОТРИТЕ ТАКЖЕ

GIT

Является частью пакета git[1]

scroll-to-top