?
Ce document utilise Manuel du site Web PHP chinois Libérer
git-cat-file - 提供資源庫對象的內容或類型和大小信息
git cat-file (-t [--allow-unknown-type]| -s [--allow-unknown-type]| -e | -p | <type> | --textconv | --filters ) [--path=<path>] <object>git cat-file (--batch | --batch-check) [ --textconv | --filters ] [--follow-symlinks]
在第一種形式中,該命令提供存儲庫中對象的內容或類型。類型是必需的,除非-t
或-p
用于查找的對象類型,或-s
用于查找對象的大小,或--textconv
或--filters
使用(其暗示型“斑點”)。
在第二種形式中,在 stdin 上提供了一個對象列表(由換行符分隔),每個對象的 SHA-1,類型和大小都打印在 stdout 上。使用可選<format>
參數(shù)可以覆蓋輸出格式。如果指定了其中之一--textconv
或者--filters
被指定,則輸入需要列出對象名稱,后跟路徑名稱,并用一個空格分隔,以便可以確定適當?shù)尿寗映绦颉?/p>
<object>
要顯示的對象的名稱。有關拼寫對象名稱的更完整列表,請參閱 gitrevisions [7] 中的“指定修訂”部分。
-t
顯示由<object>標識的對象類型而不是內容。
-s
顯示由<object>標識的對象大小,而不是內容。
-e
控制所有輸出; 如果<object>存在并且是有效的對象,則返回零狀態(tài)。
-p
基于其類型 Pretty-print(漂亮地打?。?lt;object>的內容。
<type>
通常情況下,它匹配<object>的實際類型,但是要求可以輕松地從給定<object>取消引用的類型也是允許的。一個例子是要求一個“樹”,其中<object>是一個包含它的提交對象,或者要求一個<blob>作為指向它的標記對象。
--textconv
顯示由 textconv過濾器轉換的內容。在這種情況下,為了將過濾器應用于記錄在<path>索引處的內容,<object> 必須采用 <tree-ish>:<path>或<path>的形式。
--filters
顯示由當前工作樹中為給定<路徑>配置的過濾器轉換的內容(即涂抹過濾器,行尾轉換等)。在這種情況下,<object> 的格式必須是 <tree-ish>:<path>或<path>。
--path=<path>
與--textconv或--filters一起使用時,允許單獨指定對象名稱和路徑,例如,當難以找出 blob 來自哪個版本時。
--batch --batch=<format>
打印 stdin 上提供的每個對象的對象信息和內容。不能與其他選項或參數(shù)結合使用,除非--textconv
或者--filters
,在這種情況下,輸入行還需要指定由空白分隔的路徑。有關BATCH OUTPUT
詳情,請參閱下面的部分。
--batch-check --batch-check=<format>
打印 stdin 上提供的每個對象的對象信息。不能與其他選項或參數(shù)結合使用,除非--textconv
或者--filters
,在這種情況下,輸入行還需要指定由空白分隔的路徑。有關BATCH OUTPUT
詳情,請參閱下面的部分。
--batch-all-objects
除了讀取 stdin 上的對象列表,還可以對存儲庫中的所有對象以及任何其他對象存儲(不僅僅是可到達的對象)執(zhí)行請求的批處理操作。需要--batch
或被--batch-check
指定。請注意,這些對象是按照它們的散列順序進行訪問的。
--buffer
在每個對象輸出后,通常會批處理輸出刷新,以便進程可以交互式讀取和寫入cat-file
。使用此選項,輸出使用正常的stdio緩沖; 這在調用--batch-check
大量對象時效率更高。
--allow-unknown-type
允許 -s 或 -t 查詢未知類型的破壞/損壞( broken/corrupt)的對象。
--follow-symlinks
使用 --batch或--batch-check,當請求具有表單 tree-ish:path-in-tree 的擴展 SHA-1 表達式的對象時,請遵循存儲庫內的符號鏈接。提供關于鏈接本身的輸出,而不是提供有關鏈接到對象的輸出。如果符號鏈接指向 tree-ish 之外(例如指向/ 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
對于常規(guī)文件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
,這些將打印有關符號鏈接本身的數(shù)據(jù)。在這種情況下HEAD:link
,你會看到
4d1ae35ba2c8ec712fa2a379db44ad639ca277bd blob 1
無論plink
和alink
點外樹,因此他們將分別打?。?/p>
symlink 4../f
symlink 11/etc/passwd
如果-t
指定了其中一個<type>。
如果-s
指定,則以字節(jié)為單位的<object>的大小。
如果-e
指定,則不輸出。
如果-p
指定,則<object>的內容將被打印出來。
如果指定<type>,則會返回<object>的原始(但未壓縮的)內容。
如果--batch
或者--batch-check
給出,cat-file
將從標準輸入讀取對象,每行一個,并打印關于它們的信息。默認情況下,整行被認為是一個對象,就像它被饋送到 git-rev-parse [1] 一樣。
您可以使用自定義指定每個對象顯示的信息<format>
。它<format>
被逐字復制到每個對象的標準輸出中,%(atom)
擴展形式的占位符后跟一個換行符??捎玫脑邮牵?/p>
objectname
對象的40-十六進制對象名稱。
objecttype
對象的類型(與cat-file -t
報告相同)。
objectsize
對象的大?。ㄒ宰止?jié)為單位cat-file -s
)(與報告相同)。
objectsize:disk
對象在磁盤上占用的大?。ㄒ宰止?jié)為單位)。請參閱CAVEATS
以下部分有關磁盤大小的說明。
deltabase
如果對象存儲為磁盤上的增量,則此擴展為delta基本對象的40-hex sha1。否則,展開為 null sha1(40個零)。見CAVEATS
下文。
rest
如果在輸出字符串中使用此原子,則會在第一個空白邊界處分割輸入行。該空白之前的所有字符都被認為是對象名稱;在第一次運行空白(即,線的“休息”)之后的字符被輸出以代替%(rest)
原子。
如果未指定格式,則默認格式為%(objectname) %(objecttype) %(objectsize)
。
如果--batch
指定,則對象信息后面是對象內容(由%(objectsize)
字節(jié)組成),后面跟著換行符。
例如,--batch
沒有自定義格式會產生:
<sha1> SP <type> SP <size> LF<contents> LF
而--batch-check='%(objectname) %(objecttype)'
會產生:
<sha1> SP <type> LF
如果在標準輸入中指定了一個名稱,該名稱無法解析為存儲庫中的對象,cat-file
則將忽略任何自定義格式并進行打?。?/p>
<object> SP missing LF
如果使用--follow-symlinks,并且存儲庫中的符號鏈接指向存儲庫外部,cat-file
則將忽略任何自定義格式并打?。?/p>
symlink SP <size> LF<symlink> LF
符號鏈接將是絕對的(以/開頭),或者相對于樹根。例如,如果 dir / link 指向 ../../foo,那么<symlink>將是 ../foo。<size>是符號鏈接的大?。ㄒ宰止?jié)為單位)。
如果使用--follow-symlinks,則會顯示以下錯誤消息:
<object> SP missing LF
在請求的初始符號鏈接不存在時打印。
dangling SP <size> LF<object> LF
是在初始符號鏈接存在時打印的,但它(傳遞)指向的東西沒有。
loop SP <size> LF<object> LF
是為符號鏈接循環(huán)(或任何需要超過40個鏈接分辨率才能解析的符號鏈接)打印的。
notdir SP <size> LF<object> LF
在符號鏈接解析期間,當文件被用作目錄名稱時,會打印該文件。
請注意,磁盤上的對象大小是準確報告的,但應該小心確定哪些引用或對象負責磁盤使用。壓縮的非 delta 對象的大小可能遠遠大于反對它的 delta 對象的大小,但是選擇哪個對象是基礎,哪個是 delta 是任意的,并且在重新包裝期間可能會發(fā)生變化。
還要注意對象數(shù)據(jù)庫中可能存在多個對象副本;在這種情況下,未定義將報告哪個副本的大小或增量基數(shù)。