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