Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
- 2.53.0 → 2.54.0 no changes
-
2.52.0
2025-11-17
- 2.51.1 → 2.51.2 no changes
-
2.51.0
2025-08-18
- 2.50.1 no changes
-
2.50.0
2025-06-16
- 2.46.2 → 2.49.1 no changes
-
2.46.1
2024-09-13
- 2.42.2 → 2.46.0 no changes
-
2.42.1
2023-11-02
-
2.42.0
2023-08-21
- 2.40.1 → 2.41.3 no changes
-
2.40.0
2023-03-12
- 2.38.1 → 2.39.5 no changes
-
2.38.0
2022-10-02
- 2.36.1 → 2.37.7 no changes
-
2.36.0
2022-04-18
- 2.34.1 → 2.35.8 no changes
-
2.34.0
2021-11-15
- 2.32.1 → 2.33.8 no changes
-
2.32.0
2021-06-06
- 2.28.1 → 2.31.8 no changes
-
2.28.0
2020-07-27
- 2.21.1 → 2.27.1 no changes
-
2.21.0
2019-02-24
- 2.19.1 → 2.20.5 no changes
-
2.19.0
2018-09-10
- 2.17.0 → 2.18.5 no changes
-
2.16.6
2019-12-06
- 2.15.4 no changes
-
2.14.6
2019-12-06
- 2.12.5 → 2.13.7 no changes
-
2.11.4
2017-09-22
- 2.10.5 no changes
-
2.9.5
2017-07-30
- 2.7.6 → 2.8.6 no changes
-
2.6.7
2017-05-05
-
2.5.6
2017-05-05
- 2.1.4 → 2.4.12 no changes
-
2.0.5
2014-12-17
ОБЗОР
git cat-file <тип> <объект> git cat-file (-e | -p | -t | -s) <объект> git cat-file (--textconv | --filters) [<ред>:<путь|указатель-дерева> | --path=<путь|указатель-дерева> <ред>] git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects] [--buffer] [--follow-symlinks] [--unordered] [--textconv | --filters] [-Z]
ОПИСАНИЕ
Выводит содержимое или другие свойства, такие как размер, тип или информация о дельте, одного или нескольких объектов.
Эта команда может работать в двух режимах, в зависимости от того, указан ли параметр из семейства --batch.
В непакетном режиме команда предоставляет информацию об объекте, названном в командной строке.
В пакетном режиме аргументы читаются из стандартного ввода.
ПАРАМЕТРЫ
- <объект>
-
Имя объекта для отображения. Более полный список способов написания имён объектов см. в разделе "ЗАДАНИЕ РЕВИЗИЙ" в gitrevisions[7].
- -t
-
Вместо содержимого показывать тип объекта, идентифицируемый <объектом>.
- -s
-
Вместо содержимого показывать размер объекта, идентифицируемый <объектом>. При использовании с параметром
--use-mailmapпокажет размер обновлённого объекта после замены идентификаторов с использованием механизма mailmap. - -e
-
Завершиться с нулевым статусом, если <объект> существует и является допустимым объектом. Если <объект> имеет недопустимый формат, завершиться с ненулевым статусом и выдать ошибку в stderr.
- -p
-
Вывести содержимое <объекта> в красивом формате на основе его типа.
- <type>
-
Обычно это соответствует реальному типу <объекта>, но также разрешено запрашивать тип, который может быть тривиально разыменован из данного <объекта>. Примером является запрос "дерева", где <объект> является объектом коммита, который его содержит, или запрос "blob-объекта", где <объект> является объектом метки, который указывает на него.
- --mailmap
- --no-mailmap
- --use-mailmap
- --no-use-mailmap
-
Использовать файл mailmap для сопоставления имён и адресов электронной почты автора, коммиттера и создателя метки с каноническими реальными именами и адресами электронной почты. См. git-shortlog[1].
- --textconv
-
Показывать содержимое, преобразованное фильтром textconv. В этом случае <объект> должен иметь вид <указатель-дерева>
:<путь> или:<путь>, чтобы применить фильтр к содержимому, записанному в индексе по <путь>. - --filters
-
Показывать содержимое, преобразованное фильтрами, настроенными в текущем рабочем каталоге для данного <пути> (т.е. фильтры smudge, преобразование концов строк и т.д.). В этом случае <объект> должен иметь вид <указатель-дерева>
:<путь> или:<путь>. - --filter=<filter-spec>
- --no-filter
-
Исключать объекты из списка выводимых объектов. Это можно использовать только в сочетании с одним из пакетных режимов. Исключённые объекты, которые были явно запрошены через любой из пакетных режимов, читающих объекты через стандартный ввод (
--batch,--batch-check), будут сообщены как "filtered". Исключённые объекты в режиме--batch-all-objectsне будут выводиться вообще. <спецификатор-фильтра> может быть одним из следующих:Форма --filter=blob:none опускает все blob-объекты.
Форма --filter=blob:limit=<n>[kmg] опускает blob-объекты размером не менее n байт или единиц. n может быть нулём. Суффиксы k, m и g можно использовать для обозначения единиц в КиБ, МиБ или ГиБ. Например, blob:limit=1k — это то же самое, что и blob:limit=1024.
Форма --filter=object:type=(tag|commit|tree|blob) опускает все объекты, которые не являются запрошенным типом.
- --path=<path>
-
Для использования с
--textconvили--filters, чтобы позволить указывать имя объекта и путь отдельно, например, когда трудно определить редакцию, из которой пришёл blob-объект. - --batch
- --batch=<format>
-
Выводит информацию об объекте и содержимое для каждого объекта, предоставленного в stdin. Не может комбинироваться с любыми другими параметрами или аргументами, кроме
--textconv,--filtersили--use-mailmap.-
При использовании с
--textconvили--filtersстроки ввода должны указывать путь, разделённый пробелами. Подробности см. в разделе ПАКЕТНЫЙ ВЫВОД ниже. -
При использовании с
--use-mailmapдля объектов коммитов и меток часть вывода с содержимым показывает идентификаторы, заменённые с использованием механизма mailmap, в то время как информационная часть вывода показывает размер объекта так, как если бы он действительно записывал заменённые идентификаторы.
-
- --batch-check
- --batch-check=<format>
-
Выводит информацию об объекте для каждого объекта, предоставленного в stdin. Не может комбинироваться с любыми другими параметрами или аргументами, кроме
--textconv,--filtersили--use-mailmap.-
При использовании с
--textconvили--filtersстроки ввода должны указывать путь, разделённый пробелами. Подробности см. в разделе ПАКЕТНЫЙ ВЫВОД ниже. -
При использовании с
--use-mailmapдля объектов коммитов и меток выводимая информация об объекте показывает размер объекта так, как если бы идентификаторы, записанные в нём, были заменены механизмом mailmap.
-
- --batch-command
- --batch-command=<формат>
-
Входит в командный режим, который читает команды и аргументы из stdin. Может комбинироваться только с
--buffer,--textconv,--use-mailmapили--filters.-
При использовании с
--textconvили--filtersстроки ввода должны указывать путь, разделённый пробелами. Подробности см. в разделе ПАКЕТНЫЙ ВЫВОД ниже. -
При использовании с
--use-mailmapдля объектов коммитов и меток командаcontentsпоказывает идентификаторы, заменённые с использованием механизма mailmap, в то время как командаinfoпоказывает размер объекта так, как если бы он действительно записывал заменённые идентификаторы.
--batch-commandраспознаёт следующие команды:- contents <объект>
-
Выводит содержимое объекта для ссылки на объект <объект>. Это соответствует выводу
--batch. - info <объект>
-
Выводит информацию об объекте для ссылки на объект <объект>. Это соответствует выводу
--batch-check. - flush
-
Используется с
--bufferдля выполнения всех предыдущих команд, которые были выданы с начала или с момента последнего выдачи flush. Когда используется--buffer, вывод не будет поступать, пока не будет выданflush. Когда--bufferне используется, команды сбрасываются каждый раз без выдачиflush.
-
- --batch-all-objects
-
Вместо чтения списка объектов из stdin выполнить запрошенную пакетную операцию для всех объектов в репозитории и любых дополнительных хранилищах объектов (не только достижимых объектов). Требует указания
--batchили--batch-check. По умолчанию объекты обрабатываются в порядке сортировки по их хешам; см. также--unorderedниже. Объекты представляются как есть, без учёта механизма "замены" git-replace[1]. - --buffer
-
Обычно пакетный вывод сбрасывается после вывода каждого объекта, чтобы процесс мог интерактивно читать и писать из
cat-file. С этим параметром вывод использует обычную буферизацию stdio; это гораздо эффективнее при вызове--batch-checkили--batch-commandдля большого количества объектов. - --unordered
-
Когда используется
--batch-all-objects, обрабатывать объекты в порядке, который может быть более эффективным для доступа к содержимому объектов, чем порядок хешей. Точные детали порядка не определены, но если вам не требуется конкретный порядок, это обычно должно приводить к более быстрому выводу, особенно с--batch. Обратите внимание, чтоcat-fileвсё равно покажет каждый объект только один раз, даже если он хранится в репозитории несколько раз. - --follow-symlinks
-
С
--batchили--batch-checkследовать по символьным ссылкам внутри репозитория при запросе объектов с расширенными выражениями SHA-1 вида указатель-дерева:путь-в-дереве. Вместо вывода информации о самой ссылке выводить информацию о целевом объекте. Если символьная ссылка указывает за пределы указателя-дерева (например, ссылка на/fooили ссылка на корневом уровне на../foo), будет выведена часть ссылки, которая находится за пределами дерева.Этот параметр (в настоящее время) не работает корректно, когда указан объект в индексе (например,
:linkвместоHEAD:link), а не объект в дереве.Этот параметр (в настоящее время) нельзя использовать, если не используется
--batchили--batch-check.Например, рассмотрим репозиторий git, содержащий:
f: файл, содержащий "hello\n" link: символьная ссылка на f dir/link: символьная ссылка на ../f plink: символьная ссылка на ../f alink: символьная ссылка на /etc/passwd
Для обычного файла
fкомандаechoHEAD:f|gitcat-file--batchвыведетce013625030ba8dba906f756967f9e9ca394464a blob 6
И
echoHEAD:link|gitcat-file--batch--follow-symlinksвыведет то же самое, как иHEAD:dir/link, поскольку они оба указывают наHEAD:f.Без
--follow-symlinksони вывели бы данные о самой символьной ссылке. В случаеHEAD:linkвы бы увидели4d1ae35ba2c8ec712fa2a379db44ad639ca277bd blob 1
И
plink, иalinkуказывают за пределы дерева, поэтому они соответственно выведут:symlink 4 ../f
symlink 11 /etc/passwd
- -Z
-
Имеет смысл только с
--batch,--batch-checkили--batch-command; ввод и вывод разделяется NUL вместо символа новой строки. - -z
-
Имеет смысл только с
--batch,--batch-checkили--batch-command; ввод разделяется NUL вместо символа новой строки. Этот параметр устарел в пользу-Z, так как иначе вывод может быть неоднозначным.
ВЫВОД
Если указан -t, один из <тип>.
Если указан -s, размер <объекта> в байтах.
Если указан -e, вывода нет, если только <объект> не имеет неверный формат.
Если указан -p, содержимое <объекта> выводится в красивом формате.
Если указан <тип>, будет возвращено необработанное (хотя и несжатое) содержимое <объекта>.
ПАКЕТНЫЙ ВЫВОД
Если указан --batch или --batch-check, cat-file будет читать объекты из stdin, по одному на строку, и выводить информацию о них в том же порядке, в котором они были прочитаны. По умолчанию вся строка рассматривается как объект, как если бы она была передана git-rev-parse[1].
Когда указан --batch-command, cat-file будет читать команды из stdin, по одной на строку, и выводить информацию на основе указанной команды. С --batch-command команда info, за которой следует объект, выведет информацию об объекте так же, как это сделал бы --batch-check, а команда contents, за которой следует объект, выведет содержимое так же, как это сделал бы --batch.
Вы можете указать информацию, показываемую для каждого объекта, используя пользовательский <формат>. <формат> буквально копируется в stdout для каждого объекта, с раскрытием заполнителей вида %(атом), после чего следует новая строка. Доступные атомы:
-
objectname -
Полное шестнадцатеричное представление имени объекта.
-
objecttype -
Тип объекта (тот же, который сообщает
cat-file-t). -
objectmode -
Если указанный объект имеет информацию о режиме (например, дерево или запись индекса), режим, выраженный как восьмеричное целое число. В противном случае — пустая строка.
-
objectsize -
Размер объекта в байтах (тот же, который сообщает
cat-file-s). -
objectsize:disk -
Размер, в байтах, который объект занимает на диске. См. примечание о размерах на диске в разделе ПРЕДОСТЕРЕЖЕНИЯ ниже.
-
deltabase -
Если объект хранится на диске в виде дельты, раскрывается в полное шестнадцатеричное представление имени базового объекта дельты. В противном случае раскрывается в нулевой OID (все нули). См. ПРЕДОСТЕРЕЖЕНИЯ ниже.
-
rest -
Если этот атом используется в строке вывода, входные строки разбиваются по первой границе пробела. Все символы до этого пробела считаются именем объекта; символы после этой первой последовательности пробелов (т.е. "остаток" строки) выводятся вместо атома
%(rest).
Если формат не указан, формат по умолчанию — %(objectname) %(objecttype) %(objectsize).
Если указан --batch или если --batch-command используется с командой contents, за информацией об объекте следует содержимое объекта (состоящее из %(objectsize) байт), а затем новая строка.
Например, --batch без пользовательского формата выдаст:
<oid> SP <тип> SP <размер> LF <содержимое> LF
В то время как --batch-check='%(objectname) %(objecttype) выдаст:
<oid> SP <тип> LF
Если в stdin указано имя, которое не может быть преобразовано в объект в репозитории, cat-file проигнорирует любой пользовательский формат и выведет:
<объект> SP missing LF
Если в stdin указано имя, которое отфильтровано с помощью --filter=, то cat-file проигнорирует любой пользовательский формат и выведет:
<объект> SP excluded LF
Если указано имя, которое может ссылаться более чем на один объект (неоднозначный короткий sha), то cat-file проигнорирует любой пользовательский формат и выведет:
<объект> SP ambiguous LF
Если указано имя, которое ссылается на запись подмодуля в дереве, а целевой объект не существует в репозитории, то cat-file проигнорирует любой пользовательский формат и выведет (с идентификатором объекта подмодуля):
<oid> SP submodule LF
Если используется --follow-symlinks и символьная ссылка в репозитории указывает за пределы репозитория, то cat-file проигнорирует любой пользовательский формат и выведет:
symlink SP <размер> LF <символьная-ссылка> LF
Символьная ссылка будет либо абсолютной (начинающейся с /), либо относительной корня дерева. Например, если dir/link указывает на ../../foo, то <символьная-ссылка> будет ../foo. <размер> — это размер символьной ссылки в байтах.
Если используется --follow-symlinks, будут отображаться следующие сообщения об ошибках:
<объект> SP missing LF
выводится, когда запрошенная начальная символьная ссылка не существует.
dangling SP <размер> LF
<объект> LF
выводится, когда начальная символьная ссылка существует, но то, на что она (транзитивно) указывает, не существует.
loop SP <размер> LF
<объект> LF
выводится для циклов символьных ссылок (или любых символьных ссылок, для разрешения которых требуется более 40 разрешений ссылок).
notdir SP <размер> LF
<объект> LF
выводится, когда во время разрешения символьной ссылки файл используется как имя каталога.
В качестве альтернативы, когда передан -Z, символы перевода строки в любом из вышеуказанных примеров заменяются терминаторами NUL. Это гарантирует, что вывод будет пригоден для анализа, если сам вывод будет содержать перевод строки, и поэтому рекомендуется для использования в сценариях.
ПРЕДУПРЕЖДЕНИЯ
Обратите внимание, что размеры объектов на диске сообщаются точно, но следует проявлять осторожность при выводах о том, какие ссылки или объекты ответственны за использование диска. Размер упакованного недельтового объекта может быть намного больше размера объектов, которые дельтифицируются относительно него, но выбор того, какой объект является базой, а какой — дельтой, является произвольным и может измениться во время переупаковки.
Также обратите внимание, что в базе данных объектов может присутствовать несколько копий объекта; в этом случае не определено, размер или база дельты какой копии будут сообщены.
GIT
Является частью пакета git[1]