W3docs

git show

Команда git show: просмотр коммитов, тегов и содержимого файлов в любой ревизии. Полезные опции и примеры использования.

Определение

Команда git show отображает подробную информацию об объекте Git — чаще всего о коммите. Для коммита она выводит сообщение лога вместе с полным diff изменений, давая полное представление об одной ревизии. Кроме того, она позволяет просматривать теги, деревья и содержимое файла в любой точке истории.

Используйте git show, когда вы уже знаете, какой объект вас интересует, и хотите увидеть всё о нём на одном экране. На этой странице рассматривается: отображение коммитов, чтение вывода, просмотр файла в любой ревизии, проверка тегов, наиболее полезные параметры, а также отличие команды от git log и git diff.

Просмотр коммита

Без аргументов git show отображает последний коммит (HEAD): его автора, дату, сообщение и внесённые изменения.

git show

Чтобы проверить любой другой коммит, передайте его хэш, имя ветки или относительную ссылку:

git show a1b2c3d        # by abbreviated hash
git show HEAD~2         # the commit two steps before HEAD
git show main           # the tip of the main branch
git show HEAD@{1}       # where HEAD pointed one move ago (via the reflog)

Вывод объединяет то, что вы получили бы от git log и git diff для данного коммита.

Чтение вывода

Типичный вывод коммита содержит заголовок, за которым следует унифицированный diff:

commit a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0
Author: Jane Dev <[email protected]m>
Date:   Mon Jun 9 14:02:11 2025 +0200

    Fix off-by-one error in pagination

diff --git a/src/page.js b/src/page.js
index 83db48f..f735c2e 100644
--- a/src/page.js
+++ b/src/page.js
@@ -10,7 +10,7 @@ function pageStart(page, perPage) {
-  return page * perPage;
+  return (page - 1) * perPage;
 }

В заголовке указаны коммит, его автор и дата. Блок diff --git показывает изменения: строки, начинающиеся с -, были удалены, строки с + — добавлены, а заголовок блока @@ ... @@ сообщает номера затронутых строк. Это тот же формат патча, что используется в git diff.

Просмотр файла в определённой ревизии

Мощная возможность — вывести файл в том виде, в каком он существовал в заданном коммите, без фактического переключения на него. Используйте синтаксис <commit>:<path>:

git show HEAD~3:src/index.js

Это выводит старую версию index.js в терминал, не затрагивая рабочее дерево — идеально для сравнения или копирования фрагмента из прошлого. Путь указывается от корня репозитория, а не от текущего каталога. Чтобы проверить проиндексированную версию файла, используйте двоеточие без имени коммита:

git show :src/index.js   # the file as currently staged in the index

Проверка тегов

Когда вы указываете git show на аннотированный тег, команда выводит сообщение тега и информацию о его создателе, а затем — коммит, на который ссылается тег:

git show v1.0.0

Это самый быстрый способ узнать, кто создал тег релиза и на что он указывает. О создании тегов читайте в разделе git tag. Лёгкий тег не имеет собственных метаданных, поэтому git show сразу переходит к отображению помеченного коммита.

Отображение нескольких объектов одновременно

git show принимает более одного аргумента и выводит каждый объект по очереди, начиная с самого нового. Это удобно для просмотра небольшого набора связанных коммитов без прокрутки всей истории:

git show HEAD HEAD~1 v1.0.0

Полезные параметры

По умолчанию git show включает полный diff. Перечисленные ниже параметры позволяют сократить или преобразовать вывод:

git show --stat HEAD         # summary of files changed and line counts
git show --name-only HEAD    # just the changed file names
git show -s HEAD             # suppress the diff; show only the commit message
git show --pretty=oneline HEAD   # compact one-line header
git show --format="%an %s" -s HEAD   # custom format: author name + subject

Заполнители --format--pretty) общие с git log: %an — имя автора, %s — строка темы, %H — полный хэш, %ad — дата автора.

Основные команды

КомандаОписание
git showПоказывает последний коммит с полным diff.
git show <commit>Показывает конкретный коммит по хэшу, ветке или ссылке.
git show <commit>:<file>Выводит содержимое файла на момент указанного коммита.
git show --stat <commit>Суммирует, какие файлы изменились и на сколько строк.
git show --name-only <commit>Выводит только имена изменённых файлов.
git show -s <commit>Показывает только сообщение коммита без diff.
git show <tag>Показывает метаданные тега и коммит, на который он указывает.

git show vs git log и git diff

Эти три команды частично пересекаются, но служат разным целям. git log обходит диапазон коммитов и предназначен для просмотра истории. git diff сравнивает два произвольных состояния. git show фокусируется на одном объекте и сообщает о нём всё — это естественный выбор, когда вы уже знаете, какой коммит вас интересует.

Типичный рабочий процесс: найти хэш коммита с помощью git log или git blame, а затем передать его в git show, чтобы прочитать полные изменения в деталях.

Практика

Практика
Что умеет делать 'git show'?
Что умеет делать 'git show'?
Was this page helpful?