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.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 <type> <object> git cat-file (-e | -p | -t | -s) <object> git cat-file (--textconv | --filters) [<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>] git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects] [--buffer] [--follow-symlinks] [--unordered] [--textconv | --filters] [-Z]
ОПИС
Виведіть вміст або інші властивості, такі як розмір, тип або дельта-інформацію для одного або кількох об’єктів.
Ця команда може працювати у двох режимах, залежно від того, чи вказано опцію з родини --batch
.
У непакетному режимі команда надає інформацію про об’єкт, ім’я якого вказано в командному рядку.
У пакетному режимі аргументи зчитуються зі стандартного вводу.
ОПЦІЇ
- <object>
-
Назва об’єкта для відображення. Повніший список способів написання назв об’єктів див. у розділі «ВКАЗАННЯ РЕВІЗІЙ» у gitrevisions[7].
- -t
-
Замість вмісту, відображати тип об’єкта, ідентифікований як <object>.
- -s
-
Замість вмісту, показувати розмір об’єкта, ідентифікованого за допомогою <object>. Якщо використовується з опцією
--use-mailmap
, показуватиметься розмір оновленого об’єкта після заміни ідентифікаторів за допомогою механізму mailmap. - -e
-
Вихід з нульовим статусом, якщо <object> існує та є коректним об’єктом. Якщо <object> має некоректний формат, вихід з ненульовим статусом та виведенням помилки на stderr.
- -p
-
Гарно вивести вміст <object> на основі його типу.
- <type>
-
Зазвичай це відповідає реальному типу <object>, але також дозволено запитувати тип, який можна тривіально розіменувати з заданого <object>. Прикладом є запит на "дерево" з <object> як об’єктом коміту, який його містить, або запит на "блоб" з <object> як об’єктом тегу, який вказує на нього.
- --[no-]mailmap
- --[no-]use-mailmap
-
Використовуйте файл mailmap для зіставлення імен авторів, комітерів та тегерів, а також адрес електронної пошти з канонічними справжніми іменами та адресами електронної пошти. Див. git-shortlog[1].
- --textconv
-
Показує вміст, перетворений фільтром textconv. У цьому випадку <object> має мати формат <tree-ish>
:
<path> або:
<path>, щоб застосувати фільтр до вмісту, записаного в індексі за адресою <path>. - --filters
-
Показує вміст, конвертований фільтрами, налаштованими в поточному робочому дереві для заданого <шлях> (тобто фільтри розмазування, конвертація кінця рядка тощо). У цьому випадку <об'єкт> має мати формат <деревоподібно>
:
<шлях> або:
<шлях>. - --filter=<filter-spec>
- --no-filter
-
Пропустити об’єкти зі списку друкованих об’єктів. Це можна використовувати лише в поєднанні з одним із пакетних режимів. Виключені об’єкти, які були явно запитувані через будь-який із пакетних режимів, що зчитують об’єкти через стандартний ввід (
--batch
,--batch-check
), будуть позначені як "відфільтровані". Виключені об’єкти в режимі--batch-all-objects
взагалі не будуть друковані. <фільтр-специфікація> може бути одним із наступних:Форма --filter=blob:none пропускає всі блоби.
Форма --filter=blob:limit=<n>[kmg] пропускає блоби розміром щонайменше n байтів або одиниць. n може дорівнювати нулю. Суфікси k, m та g можна використовувати для найменування одиниць у KiB, MiB або GiB. Наприклад, blob:limit=1k те саме, що й blob:limit=1024.
Форма --filter=object:type=(tag|commit|tree|blob) пропускає всі об’єкти, які не належать до запитуваного типу.
- --path=<path>
-
Для використання з
--textconv
або--filters
, щоб дозволити окремо вказувати назву об’єкта та шлях, наприклад, коли важко визначити ревізію, з якої походить блоб. - --batch
- --batch=<format>
-
Вивести інформацію про об’єкт та вміст для кожного об’єкта, що надається на stdin. Не можна поєднувати з будь-якими іншими опціями чи аргументами, окрім
--textconv
,--filters
або--use-mailmap
.-
При використанні з
--textconv
або--filters
, у рядках введення необхідно вказувати шлях, розділений пробілами. Див. розділ ПАКЕТНИЙ ВИВІД нижче для отримання детальної інформації. -
При використанні з
--use-mailmap
для об’єктів commit та tag, частина contents виводу показує ідентифікаційні дані, замінені за допомогою механізму mailmap, тоді як частина information виводу показує розмір об’єкта так, ніби він фактично записав замінені ідентифікаційні дані.
-
- --batch-check
- --batch-check=<format>
-
Вивести інформацію про кожен об’єкт, наданий на stdin. Не можна поєднувати з будь-якими іншими опціями чи аргументами, окрім
--textconv
,--filters
або--use-mailmap
.-
При використанні з
--textconv
або--filters
, рядки введення повинні вкажіть шлях, розділений пробілами. Див. розділ ПАКЕТНИЙ ВИВІД нижче для отримання детальної інформації. -
При використанні з
--use-mailmap
для об’єктів commit та tag, виведена інформація про об’єкт показує розмір об’єкта так, ніби записані в ньому ідентифікаційні дані були замінені механізмом mailmap.
-
- --batch-command
- --batch-command=<формат>
-
Введіть командний режим, який зчитує команди та аргументи зі стандартного введення. Можна поєднувати лише з
--buffer
,--textconv
,--use-mailmap
або--filters
.-
При використанні з
--textconv
або--filters
, у рядках введення необхідно вказувати шлях, розділений пробілами. Див. розділ ПАКЕТНИЙ ВИВІД нижче для отримання детальної інформації. -
При використанні з
--use-mailmap
для об’єктів commit та tag, командаcontents
показує ідентифікаційні дані, замінені за допомогою механізму mailmap, тоді як командаinfo
показує розмір об’єкта так, ніби він фактично записав замінені ідентифікаційні дані.
--batch-command
розпізнає такі команди:- зміст <object>
-
Вивести вміст об’єкта для посилання на об’єкт <object>. Це відповідає виводу
--batch
. - інформація <object>
-
Вивести інформацію про об’єкт для посилання на об’єкт <object>. Це відповідає виводу
--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: a file containing "hello\n" link: a symlink to f dir/link: a symlink to ../f plink: a symlink to ../f alink: a symlink to /etc/passwd
Для звичайного файлу
f
,echo
HEAD:f
|git
cat-file
--batch
виведеce013625030ba8dba906f756967f9e9ca394464a blob 6
А
echo
HEAD:link
|git
cat-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
, вміст <object> виводиться гарним чином.
Якщо вказано <тип>, буде повернуто необроблений (хоча й нестиснутий) вміст <об'єкта>.
ПАКЕТНИЙ ВИВІД
Якщо вказано --batch
або --batch-check
, cat-file
зчитуватиме об’єкти зі stdin, по одному на рядок, та виводитиме інформацію про них у тому ж порядку, в якому вони були прочитані. За замовчуванням весь рядок вважається об’єктом, ніби він був переданий до git-rev-parse[1].
Коли вказано --batch-command
, cat-file
зчитуватиме команди зі stdin, по одній на рядок, та виводитиме інформацію на основі введеної команди. З --batch-command
, команда info
, за якою йде об’єкт, виводитиме інформацію про об’єкт так само, як це зробив би --batch-check
, а команда contents
, за якою йде об’єкт, виводитиме вміст так само, як це зробив би --batch
.
Ви можете вказати інформацію, яка відображається для кожного об’єкта, використовуючи власний <format>. <format> копіюється буквально до stdout для кожного об’єкта, з розгорнутими заповнювачами виду %
(atom
), за якими йде символ нового рядка. Доступні атоми:
-
objectname
-
Повне шістнадцяткове представлення імені об’єкта.
-
objecttype
-
Тип об’єкта (те саме, що й у звітах
cat-file
-t
). -
objectmode
-
Якщо вказаний об’єкт має інформацію про режим (наприклад, дерево або елемент індексу), режим виражається як вісімкове ціле число. В іншому випадку, порожній рядок.
-
objectsize
-
Розмір об’єкта в байтах (те саме, що й повідомляє
cat-file
-s
). -
objectsize:disk
-
Розмір, у байтах, який об’єкт займає на диску. Див. примітку щодо розмірів на диску в розділі «ЗАСТЕРЕЖЕННЯ» нижче.
-
deltabase
-
Якщо об’єкт зберігається на диску як дельта, це розширюється до повного шістнадцяткового представлення назви базового об’єкта дельта. В іншому випадку розширюється до нульового OID (всі нулі). Див. ЗАСТЕРЕЖЕННЯ нижче.
-
rest
-
Якщо цей атом використовується у вихідному рядку, вхідні рядки розділяються на межі першого пробілу. Усі символи перед цим пробілом вважаються назвою об’єкта; символи після першого пробілу (тобто "решта" рядка) виводяться замість атома
%
(rest
).
Якщо формат не вказано, формат за замовчуванням — %(назва об'єкта) %(тип об'єкта) %(розмір об'єкта).
Якщо вказано --batch
або якщо --batch-command
використовується з командою contents
, після інформації про об’єкт йде вміст об’єкта (що складається з %
(objectsize
) байтів), а потім символ нового рядка.
Наприклад, --batch
без власного формату призведе до:
<oid> SP <type> SP <size> LF <contents> LF
Тоді як --batch-check='%
(name_object
) %
(objecttype
) видасть:
<oid> SP <type> LF
Якщо на stdin вказано ім’я, яке не може бути перетворене на об’єкт у репозиторії, тоді cat-file
проігнорує будь-який користувацький формат та виведе:
<object> SP missing LF
Якщо на stdin вказано ім’я, яке фільтрується за допомогою --filter=
, то cat-file
проігнорує будь-який користувацький формат та виведе:
<object> SP excluded LF
Якщо вказано ім’я, яке може посилатися на декілька об’єктів (неоднозначний короткий шаблон), тоді cat-file
проігнорує будь-який користувацький формат та виведе:
<object> SP ambiguous LF
Якщо вказано ім’я, яке посилається на запис підмодуля в дереві, а цільовий об’єкт не існує в репозиторії, тоді cat-file
проігнорує будь-який користувацький формат та виведе (з ідентифікатором об’єкта підмодуля):
<oid> SP submodule LF
Якщо використовується --follow-symlinks
, і символічне посилання в репозиторії вказує за межі репозиторію, тоді cat-file
ігноруватиме будь-який користувацький формат та виведе:
symlink SP <size> LF <symlink> LF
Символічне посилання буде або абсолютним (починаючи з /
), або відносним до кореня дерева. Наприклад, якщо dir/link вказує на ../../foo
, тоді <симліка> буде ../foo
. <розмір> – це розмір символічного посилання в байтах.
Якщо використовується --follow-symlinks
, будуть відображатися такі повідомлення про помилки:
<object> SP missing LF
друкується, коли початкове запитуване символічне посилання не існує.
dangling SP <size> LF <object> LF
друкується, коли початкове символічне посилання існує, але щось, на що воно (транзитивне) вказує, ні.
loop SP <size> LF <object> LF
друкується для циклів символічних посилань (або будь-яких символічних посилань, для вирішення яких потрібно більше 40 розв’язань посилань).
notdir SP <size> LF <object> LF
друкується, коли під час розв’язання символічних посилань файл використовується як ім’я каталогу.
Або ж, коли передається -Z
, символи переведення рядка в будь-якому з наведених вище прикладів замінюються на NUL-термінатори. Це гарантує, що вивід буде придатним для розбору, якщо сам вивід містить символ переведення рядка, і тому рекомендується для цілей скриптів.
ЗАСТЕРЕЖЕННЯ
Зверніть увагу, що розміри об’єктів на диску повідомляються точно, але слід бути обережним, роблячи висновки про те, які посилання або об’єкти відповідають за використання диска. Розмір упакованого недельта-об’єкта може бути набагато більшим за розмір об’єктів, які дельта-об’єкти відносно нього, але вибір того, який об’єкт є базовим, а який дельта-об’єктом, є довільним і може змінюватися під час перепаковки.
Також зауважте, що в базі даних об’єктів може бути кілька копій об’єкта; у цьому випадку не визначено, розмір або дельта-база якої копії буде відображатися.
GIT
Частина набору git[1]