Открытая книга с веткой и облаком Git

git show

Что такое git-show?

git-show — это утилита командной строки, которая используется для просмотра подробных данных об объектах Git, например больших двоичных объектах, деревьях, тегах и коммитах. Поведение git-show различается в зависимости от типа объекта.

Для тегов отображаются комментарии к тегам и другие объекты, включенные в тег. Для деревьев отображаются имена и содержимое объектов дерева. Для больших двоичных объектов отображается непосредственно содержимое этих объектов. Для коммитов отображаются комментарии журнала коммитов и выходные данные сравнения, показывающие изменения в коммите.

Все объекты Git вызываются с помощью ссылок. По умолчанию команда git-show выполняется в отношении ссылки HEAD. Ссылка HEAD всегда указывает на последний коммит текущей ветки. Поэтому можно использовать git-show для просмотра комментариев журнала и выходных данных сравнения последнего коммита.

Параметры git-show

<объект>…
Можно передать ссылку на объект или список объектов, чтобы проанализировать эти объекты. Если объекты явным образом не переданы, для git-show по умолчанию выводит данные для ссылки HEAD.

--pretty[=<формат>]
Для параметра pretty указывается дополнительное значение формата, которое может быть следующим: oneline, short, medium, full, fuller, email, raw и format:<строка>. При пропуске этого параметра устанавливается значение формата по умолчанию medium. Каждый параметр формата представляет собой шаблон, по которому Git форматирует данные вывода. Параметр <code>oneline</code> удобно использовать для отображения списка коммитов

--abbrev-commit
Этот параметр сокращает длину идентификатора коммита в выводе. Идентификаторы имеют длину 40 символов, поэтому их неудобно просматривать в узком окне терминала. Этот параметр в сочетании с параметром --pretty=oneline позволяет сделать вывод команды git logкомпактным.

--no-abbrev-commit
Всегда отображается полный идентификатор коммита длиной 40 символов. Параметр --abbrev-commit игнорируется, равно как и другие параметры, которые сокращают идентификатор коммита, например --oneline format

--oneline
Это ярлык расширенной команды --pretty=oneline --abbrev-commit

--encoding[=<encoding>]
Кодировка символов в комментариях Git log по умолчанию — UTF-8. Параметр encoding позволяет изменить кодировку символов вывода. Этот параметр удобно использовать при работе с Git в среде с другой кодировкой символов, например, в терминале для азиатских языков.

>--expand-tabs=<n>
--expand-tabs
--no-expand-tabs

Эти параметры заменяют символы табуляции пробелами в выводе комментариев к журналу. Значение n определяет, скольким пробелам равен символ табуляции. Если значение n не указано явным образом, символ табуляции равен 8 пробелам. Параметр --no-expand-tabs эквивалентен n=0

--notes=<ref>
--no-notes

В Git существует система примечаний, позволяющая прикреплять к объектам произвольные метаданные note. Эти данные можно скрыть или отфильтровать с помощью команды git-show

--show-signature
Этот параметр подтверждает, что коммит подписан зашифрованной подписью, для чего передает его подкоманде gpg.

Форматы pretty для git-show

Описанный выше параметр --pretty работает с несколькими второстепенными параметрами, влияющими на формат вывода git-show. Эти второстепенные параметры перечислены ниже вместе с примером шаблона

  • oneline
    <sha1> <строка заголовка>

Параметр oneline умещает в одной строке максимально возможный объем информации

  • short
    commit <sha1>
    Author: <автор>
    <строка заголовка>
  • medium
    commit <sha1>
    Author: <автор>
    Date: <дата автора>
    <строка заголовка>
    <полный комментарий к коммиту>
  • full
    commit <sha1>
    Author: <автор>
    Commit: <разработчик>
    <строка заголовка>
    <полный комментарий к коммиту>
  • fuller
    commit <sha1>
    Author: <автор>
    AuthorDate: <дата автора>
    Commit: <разработчик>
    CommitDate: <дата разработчика>
    <строка заголовка>
    <полный комментарий к коммиту>
  • email
    From <sha1> <дата>
    From: <автор>
    Date: <дата автора>
    Subject: [PATCH] <строка заголовка>
    <полный комментарий к коммиту>
  • raw
    При форматировании с параметром raw игнорируются другие прямые параметры форматирования, переданные команде git-show, и коммит выводится в том виде, в котором он сохранен в объекте. Параметр raw игнорирует значения --abrev и --no-abbrev и всегда выводит вышестоящие коммиты.
  • format:
    Параметр format позволяет определить пользовательский формат вывода. Он работает аналогично команде printf в языке C. Параметр --pretty=format использует дополнительное значение строки шаблона. Шаблон имеет доступ к переменным заполнителям, которые заполняются данными из объекта коммита. Эти заполнители перечислены ниже:

    %H: хеш коммита
    %h: сокращенный хеш коммита
    %T: хеш дерева
    %t: сокращенный хеш дерева
    %P: хеши вышестоящих элементов
    %p: сокращенные хеши вышестоящих элементов
    %an: имя автора
    %aN: имя автора 
    %ae: электронная почта автора
    %aE: электронная почта автора 
    %ad: дата автора (в формате учитывается параметр --date=)
    %aD: дата автора, стиль RFC2822
    %ar: дата автора, относительная
    %at: дата автора, метка времени UNIX
    %ai: дата автора, формат ISO 8601
    • %cn: имя разработчика
    %cN: имя разработчика 
    %ce: электронная почта разработчика
    %cE: электронная почта разработчика 
    %cd: дата разработчика
    %cD: дата разработчика, стиль RFC2822
    %cr: дата разработчика, относительная
    %ct: дата разработчика, метка времени UNIX
    %ci: дата разработчика, формат ISO 8601
    %d: ссылочные имена, например, параметр --decorate команды git-log(1)
    %e: кодировка
    %s: тема
    %f: очищенная строка темы, подходящая для имени файла
    • %b: тело
    %N: примечания к коммиту
    %gD: средство выбора reflog, например, refs/stash@{1}
    %gd: сокращенное средство выбора reflog, например, stash@{1}
    %gs: тема reflog
    %Cred: переключение цвета на красный
    %Cgreen: переключение цвета на зеленый
    %Cblue: переключение цвета на синий
    %Creset: сброс цвета
    %C(...): спецификация цвета, как указано в параметре конфигурации color.branch.*
    %m: метка левого края, правого края или границы
    %n: новая строка
    %%: необрабатываемый %
    %x00: печать байта из шестнадцатеричного кода
    %w([<w>[,<i1>[,<i2>]]]): переключение свертывания строки аналогично параметру -w команды git-shortlog

Примеры git-show

git show --pretty="" --name-only bd61ad98

Эта команда выводит список всех файлов, задействованных в коммите

git show REVISION:path/to/file

Эта команда выводит конкретную версию файла. Замените элемент REVISON SHA-хешем Git.

git show v2.0.0 6ef002d74cbbc099e1063728cab14ef1fc49c783

Отображает тег v2.0.0, а также коммит в 6ef002d74cbbc099e1063728cab14ef1fc49c783

git show commitA...commitD

Выводит все коммиты в диапазоне между commit A и commit D

Резюме

git-show — это универсальная команда для анализа объектов в репозитории Git. С ее помощью можно найти конкретные версии определенных файлов. При анализе диапазона коммитов с помощью git-show выводятся все отдельные коммиты в указанном диапазоне. Команду git-show удобно использовать для создания примечаний к исправлениям и отслеживания изменений в репозитории.