linuxlab.io
Учебники▾
  • Линукс и сети
    Файловая система, процессы, TCP/IP, BGP и OSPF
    →
  • Terraform и IaC
    HCL, state, plan/apply на sandbox LocalStack
    →
  • Git и GitHub
    Объектная модель, plumbing, ветвление, GitHub Actions
    →
Все учебники →
ЦеныО платформеВойтиСоздать аккаунт
/
Intro
Lessons
Footer
linuxlab-УчебникиЦеныО платформеКонфиденциальность и куки
Copyright © 2026 LinuxLab. Все права защищены.
linuxlab.io
Учебники▾
  • Линукс и сети
    Файловая система, процессы, TCP/IP, BGP и OSPF
    →
  • Terraform и IaC
    HCL, state, plan/apply на sandbox LocalStack
    →
  • Git и GitHub
    Объектная модель, plumbing, ветвление, GitHub Actions
    →
Все учебники →
ЦеныО платформеВойтиСоздать аккаунт
/
  • Введение
  • Главы
  • How it works
  • Уроки
  • База знаний
  • Собеседование
home/git/kb/Инструменты/cat-file

kb/tools ── Инструменты ── intermediate

git cat-file

Plumbing-команда для чтения объектов в `.git/objects/` по их SHA. Главные флаги: `-t` (тип), `-s` (размер), `-p` (содержимое в человекочитаемом виде), `-e` (проверить, есть ли объект).

view as markdownaka: git-cat-file

git cat-file - основной инструмент для просмотра содержимого Git-объектов «изнутри». Используется в скриптах, при отладке и при изучении того, как Git хранит данные.

Базовые флаги

bash
git cat-file -t <sha>   # тип: blob | tree | commit | tag
git cat-file -s <sha>   # размер содержимого в байтах
git cat-file -p <sha>   # содержимое (pretty-print)
git cat-file -e <sha>   # проверка существования, через exit code

Pretty-print подбирает форматирование под тип объекта:

  • blob → сырые байты как есть.
  • tree → таблица «mode type sha name».
  • commit → текстовое представление: tree, parent, author, committer, message.
  • tag → annotated tag со всеми полями.

Примеры

Какой объект под этим SHA?

bash
git cat-file -t 8d0e41
# blob

Показать содержимое последнего коммита:

bash
git cat-file -p HEAD
# tree 7e3f9a2b1c4d5e6f...
# parent a1b2c3d4...
# author ...
# committer ...
#
# Сообщение коммита

Заглянуть в корневое дерево этого коммита:

bash
git cat-file -p HEAD^{tree}
# 100644 blob 5f7e9c12...    README.md
# 100644 blob 8a3f2e91...    index.html

Проверить, есть ли объект, без вывода:

bash
if git cat-file -e <sha> 2>/dev/null; then
  echo "объект на месте"
fi

Batch-режим

Для скриптов, которые читают много объектов:

bash
echo HEAD | git cat-file --batch
# <sha> commit 245
# tree ...
# parent ...
# ...

--batch принимает SHA на stdin построчно и выдаёт метаинформацию

  • содержимое для каждого. На больших репозиториях это в десятки раз быстрее, чем запускать cat-file -p для каждого SHA отдельно.

Подводные камни

  • Pretty-print для blob выводит сырые байты как есть. Если blob - бинарный (картинка, архив), это сломает терминал. Сначала проверь тип через -t.
  • Объект может быть в packfile, и cat-file найдёт его всё равно
  • это plumbing-уровень, packfile прозрачен.
  • -p HEAD показывает commit-объект, не tree. Чтобы увидеть содержимое - HEAD^{tree} или git ls-tree HEAD.

§ команды

bash
git cat-file -t <sha>

Узнать тип объекта

bash
git cat-file -p HEAD

Распечатать commit с метаданными

bash
git cat-file -p HEAD^{tree}

Распечатать корневой tree коммита

bash
git cat-file -e <sha>

Проверить наличие объекта (exit code)

§ см. также

  • rev-parsegit rev-parsePlumbing-команда, которая переводит человекочитаемые имена ссылок (HEAD, main~2, v1.0, :/typo) в полные SHA. Используется всеми porcelain-командами под капотом и удобна в скриптах.
  • blobBlobОбъект Git, который хранит содержимое одного файла. Только байты, без имени, прав и даты. Имя файла лежит в `tree`, не в blob.
  • treeTreeОбъект Git, который хранит список того, что лежит в одной директории: записи `(права, тип, SHA, имя)`. Рекурсивно ссылается на другие tree для поддиректорий.
  • commitCommitОбъект Git: снимок состояния всего проекта (через tree) плюс метаданные - автор, коммиттер, дата, родители, сообщение. SHA коммита включает SHA родителя, что делает историю криптографически связанной.
Footer
linuxlab-
Copyright © 2026 LinuxLab. Все права защищены.
Учебники
Цены
О платформе
Конфиденциальность и куки