Spec-Zone.ru › Git

git-name-rev

Имя

git-name-rev - Найти символические имена для заданных версий

Синтаксис

git name-rev [--tags] [--refs=<pattern>]
               ( --all | --annotate-stdin | <commit-ish>…​ )

Описание

Находит символические имена, подходящие для восприятия человеком, для ревизий, заданных в любом формате, разбираемом git rev-parse.

Параметры

--tags

Не использовать имена ветвей, а использовать только теги для именования коммитов

--refs=<шаблон>

Использовать только ссылки, имена которых соответствуют заданному шаблону оболочки. Шаблон может быть именем ветви, именем тега или полным именем ссылки. Если указано несколько раз, использовать ссылки, имена которых соответствуют любому из заданных шаблонов оболочки. Использовать --no-refs для очистки ранее заданных шаблонов ссылок.

--exclude=<шаблон>

Не использовать ни одну ссылку, имя которой соответствует заданному шаблону оболочки. Шаблон может быть именем ветви, именем тега или полным именем ссылки. Если указано несколько раз, ссылка будет исключена, если она соответствует любому из заданных шаблонов. При использовании вместе с --refs, ссылка будет использоваться в качестве соответствия только в том случае, если она соответствует хотя бы одному шаблону --refs и не соответствует ни одному шаблону --exclude. Использовать --no-exclude для очистки списка исключаемых шаблонов.

--all

Перечислить все коммиты, доступные из всех ссылок

--annotate-stdin

Преобразовать стандартный ввод, заменив все 40-символьные шестнадцатеричные значения SHA-1 (скажем, $hex) на "$hex ($rev_name)". При использовании с --name-only заменить на "$rev_name", полностью опуская $hex. Этот параметр назывался --stdin в более ранних версиях Git.

Например:

$ cat sample.txt

An abbreviated revision 2ae0a9cb82 will not be substituted.
The full name after substitution is 2ae0a9cb8298185a94e5998086f380a355dd8907,
while its tree object is 70d105cc79e63b81cfdcb08a15297c23e60b07ad

$ git name-rev --annotate-stdin <sample.txt

An abbreviated revision 2ae0a9cb82 will not be substituted.
The full name after substitution is 2ae0a9cb8298185a94e5998086f380a355dd8907 (master),
while its tree object is 70d105cc79e63b81cfdcb08a15297c23e60b07ad

$ git name-rev --name-only --annotate-stdin <sample.txt

An abbreviated revision 2ae0a9cb82 will not be substituted.
The full name after substitution is master,
while its tree object is 70d105cc79e63b81cfdcb08a15297c23e60b07ad
--name-only

Вместо вывода и SHA-1, и имени, выводить только имя. При указании с --tags обычный префикс тега "tags/" также опускается из имени, что более точно соответствует выводу git-describe.

--no-undefined

Прекратить выполнение с кодом ошибки != 0, когда ссылка не определена, вместо вывода undefined.

--always

Показывать уникально сокращённый объект коммита в качестве резервного варианта.

Примеры

Учитывая коммит, определить его относительное положение к локальным ссылкам. Предположим, кто-то написал вам о фантастическом коммите 33db5f4d9027a10e477ccf054b2c1ab94f74c85a. Конечно, вы заглянете в коммит, но это только показывает, что произошло, а не контекст.

Введите git name-rev:

% git name-rev 33db5f4d9027a10e477ccf054b2c1ab94f74c85a
33db5f4d9027a10e477ccf054b2c1ab94f74c85a tags/v0.99~940

Теперь вы более осведомлены, так как знаете, что это произошло на 940 ревизий раньше v0.99.

Ещё одна полезная вещь, которую вы можете сделать, это:

% git log | git name-rev --annotate-stdin

name-rev

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

Spec-Zone.ru

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