セットアップと設定
プロジェクトの取得と作成
基本的なスナップショット
ブランチとマージ
プロジェクトの共有と更新
検査と比較
パッチ適用
デバッグ
メール
外部システム
サーバー管理
- 2.50.1 変更なし
-
2.50.0
2025-06-16
- 2.46.2 → 2.49.1 変更なし
-
2.46.1
2024-09-13
- 2.42.2 → 2.46.0 変更なし
-
2.42.1
2023-11-02
-
2.42.0
2023-08-21
- 2.40.1 → 2.41.3 変更なし
-
2.40.0
2023-03-12
- 2.38.1 → 2.39.5 変更なし
-
2.38.0
2022-10-02
- 2.36.1 → 2.37.7 変更なし
-
2.36.0
2022-04-18
- 2.34.1 → 2.35.8 変更なし
-
2.34.0
2021-11-15
- 2.32.1 → 2.33.8 変更なし
-
2.32.0
2021-06-06
- 2.28.1 → 2.31.8 変更なし
-
2.28.0
2020-07-27
- 2.21.1 → 2.27.1 変更なし
-
2.21.0
2019-02-24
- 2.19.1 → 2.20.5 変更なし
-
2.19.0
2018-09-10
- 2.17.0 → 2.18.5 変更なし
-
2.16.6
2019-12-06
- 2.15.4 変更なし
-
2.14.6
2019-12-06
- 2.12.5 → 2.13.7 変更なし
-
2.11.4
2017-09-22
- 2.10.5 変更なし
-
2.9.5
2017-07-30
- 2.7.6 → 2.8.6 変更なし
-
2.6.7
2017-05-05
-
2.5.6
2017-05-05
- 2.1.4 → 2.4.12 変更なし
-
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]
説明
1つ以上のオブジェクトのコンテンツまたはサイズ、タイプ、デルタ情報などの他のプロパティを出力します。
このコマンドは、--batch
ファミリーのオプションが指定されているかどうかに応じて、2つのモードで動作できます。
非バッチモードでは、コマンドはコマンドラインで指定されたオブジェクトに関する情報を提供します。
バッチモードでは、引数は標準入力から読み込まれます。
オプション
- <object>
-
表示するオブジェクトの名前。オブジェクト名の指定方法の詳細については、gitrevisions[7] の「リビジョンの指定」セクションを参照してください。
- -t
-
コンテンツの代わりに、<object> で識別されるオブジェクトタイプを表示します。
- -s
-
コンテンツの代わりに、<object> で識別されるオブジェクトサイズを表示します。
--use-mailmap
オプションと一緒に使用すると、mailmap メカニズムを使用して識別子を置換した後の更新されたオブジェクトのサイズが表示されます。 - -e
-
<object> が存在し、有効なオブジェクトである場合は、ゼロステータスで終了します。<object> が無効な形式である場合は、非ゼロステータスで終了し、標準エラー出力にエラーを出力します。
- -p
-
<object> のコンテンツをそのタイプに基づいて整形して出力します。
- <type>
-
通常、これは <object> の実際のタイプと一致しますが、与えられた <object> から簡単に逆参照できるタイプを要求することも許可されています。例としては、それを格納するコミットオブジェクトが <object> である「tree」を要求したり、それを指すタグオブジェクトが <object> である「blob」を要求したりすることが挙げられます。
- --[no-]mailmap
- --[no-]use-mailmap
-
mailmap ファイルを使用して、作者、コミッター、タガーの名前とメールアドレスを正規の実名とメールアドレスにマッピングします。git-shortlog[1] を参照してください。
- --textconv
-
textconv フィルターによって変換されたコンテンツを表示します。この場合、フィルターをインデックスに記録されているコンテンツに適用するために、<object> は <tree-ish>
:
<path> または:
<path> の形式である必要があります。 - --filters
-
与えられた <path> の現在のワーキングツリーで設定されたフィルター(スマッジフィルター、行末変換など)によって変換されたコンテンツを表示します。この場合、<object> は <tree-ish>
:
<path> または:
<path> の形式である必要があります。 - --filter=<filter-spec>
- --no-filter
-
出力されるオブジェクトのリストからオブジェクトを除外します。これはバッチモードのいずれかと組み合わせてのみ使用できます。標準入力 (
--batch
,--batch-check
) を介してオブジェクトを読み取るバッチモードのいずれかによって明示的に要求された除外されたオブジェクトは、「filtered」として報告されます。--batch-all-objects
モードで除外されたオブジェクトはまったく出力されません。<filter-spec> は次のいずれかです形式 --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
とともに使用する場合、入力行はパスを空白で区切って指定する必要があります。詳細については、以下のBATCH
OUTPUT
セクションを参照してください。 -
--use-mailmap
とともに使用する場合、コミットオブジェクトとタグオブジェクトの場合、出力のコンテンツ部分は mailmap メカニズムを使用して置き換えられた識別子を示し、出力の情報部分は、置き換えられた識別子が実際に記録されたかのようにオブジェクトのサイズを示します。
-
- --batch-check
- --batch-check=<format>
-
stdin で提供される各オブジェクトのオブジェクト情報を出力します。
--textconv
、--filters
、--use-mailmap
以外の他のオプションや引数と組み合わせることはできません。-
--textconv
または--filters
とともに使用する場合、入力行はパスを空白で区切って指定する必要があります。詳細については、以下のBATCH
OUTPUT
セクションを参照してください。 -
--use-mailmap
とともに使用する場合、コミットオブジェクトとタグオブジェクトの場合、出力されるオブジェクト情報は、それに記録された識別子が mailmap メカニズムによって置き換えられたかのようにオブジェクトのサイズを示します。
-
- --batch-command
- --batch-command=<format>
-
stdin からコマンドと引数を読み取るコマンドモードに入ります。
--buffer
、--textconv
、--use-mailmap
、または--filters
とのみ組み合わせることができます。-
--textconv
または--filters
とともに使用する場合、入力行はパスを空白で区切って指定する必要があります。詳細については、以下のBATCH
OUTPUT
セクションを参照してください。 -
--use-mailmap
とともに使用する場合、コミットオブジェクトとタグオブジェクトの場合、contents
コマンドは mailmap メカニズムを使用して置き換えられた識別子を示し、info
コマンドは、置き換えられた識別子が実際に記録されたかのようにオブジェクトのサイズを示します。
--batch-command
は次のコマンドを認識します- contents <object>
-
オブジェクト参照 <object> のオブジェクトコンテンツを出力します。これは
--batch
の出力に対応します。 - info <object>
-
オブジェクト参照 <object> のオブジェクト情報を出力します。これは
--batch-check
の出力に対応します。 - flush
-
--buffer
とともに使用され、開始から、または最後の flush が発行されてから発行された先行するすべてのコマンドを実行します。--buffer
が使用されている場合、flush
が発行されるまで出力は行われません。--buffer
が使用されていない場合、flush
を発行しなくてもコマンドは毎回フラッシュされます。
-
- --batch-all-objects
-
標準入力でオブジェクトのリストを読み取る代わりに、リポジトリ内のすべてのオブジェクトと代替オブジェクトストア(到達可能なオブジェクトだけでなく)に対して要求されたバッチ操作を実行します。
--batch
または--batch-check
の指定が必要です。デフォルトでは、オブジェクトはハッシュによってソートされた順序で訪問されます。以下の--unordered
も参照してください。オブジェクトは、git-replace[1] の「replace」メカニズムを尊重せずに、そのまま表示されます。 - --buffer
-
通常、バッチ出力は各オブジェクトが出力された後にフラッシュされるため、プロセスは
cat-file
から対話的に読み書きできます。このオプションを使用すると、出力は通常の stdio バッファリングを使用します。これは、多数のオブジェクトに対して--batch-check
または--batch-command
を呼び出す場合に、はるかに効率的です。 - --unordered
-
--batch-all-objects
が使用されている場合、ハッシュ順よりもオブジェクトコンテンツへのアクセスに効率的な順序でオブジェクトを訪問します。順序の正確な詳細は指定されていませんが、特定の順序を必要としない場合は、特に--batch
を使用した場合に、通常はより高速な出力が得られます。リポジトリに複数回保存されていても、cat-file
は各オブジェクトを一度だけ表示することに注意してください。 - --follow-symlinks
-
--batch
または--batch-check
を使用して、tree-ish:path-in-tree の形式の拡張 SHA-1 式でオブジェクトを要求する際に、リポジトリ内のシンボリックリンクをたどります。リンク自体に関する出力を提供する代わりに、リンク先のオブジェクトに関する出力を提供します。シンボリックリンクが tree-ish の外部を指している場合(例:/foo
へのリンク、またはルートレベルの../foo
へのリンク)、ツリーの外部にあるリンクの部分が出力されます。このオプションは、ツリー内のオブジェクトではなく、インデックス内のオブジェクトが指定された場合(例:
HEAD:link
ではなく: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
が指定されている場合、<type> のいずれか。
-s
が指定されている場合、<object> のサイズ(バイト単位)。
-e
が指定されている場合、<object> が不正な形式でない限り、出力はありません。
-p
が指定されている場合、<object> のコンテンツは整形されて出力されます。
<type> が指定されている場合、<object> の生(ただし非圧縮)コンテンツが返されます。
バッチ出力
--batch
または --batch-check
が指定されている場合、cat-file
は標準入力からオブジェクトを1行につき1つずつ読み込み、読み込まれた順序でそれらに関する情報を出力します。デフォルトでは、行全体がオブジェクトとして扱われ、あたかも git-rev-parse[1] に供給されたかのように処理されます。
--batch-command
が指定されている場合、cat-file
は標準入力からコマンドを1行につき1つずつ読み込み、指定されたコマンドに基づいて情報を出力します。--batch-command
を使用すると、オブジェクトに続く info
コマンドは --batch-check
と同じ方法でオブジェクトに関する情報を出力し、オブジェクトに続く contents
コマンドは --batch
と同じ方法でコンテンツを出力します。
カスタムの <format> を使用して、各オブジェクトに表示される情報を指定できます。<format> は、%
(atom
) の形式のプレースホルダーが展開され、その後に改行が続く形式で、各オブジェクトに対して文字通り標準出力にコピーされます。使用可能なアトムは次のとおりです。
objectname
-
オブジェクト名の完全な16進数表現。
objecttype
-
オブジェクトのタイプ(
cat-file
-t
が報告するものと同じ)。 objectsize
-
オブジェクトのサイズ(バイト単位)(
cat-file
-s
が報告するものと同じ)。 objectsize:disk
-
オブジェクトがディスク上で占めるサイズ(バイト単位)。以下の
CAVEATS
セクションのディスク上のサイズに関する注記を参照してください。 deltabase
-
オブジェクトがディスク上でデルタとして格納されている場合、これはデルタベースオブジェクト名の完全な16進数表現に展開されます。そうでない場合、ヌル OID(すべてゼロ)に展開されます。以下の
CAVEATS
を参照してください。 rest
-
このアトムが出力文字列で使用されている場合、入力行は最初の空白境界で分割されます。その空白の前のすべての文字はオブジェクト名と見なされます。その最初の空白の後の文字(つまり、行の「残り」)は、
%
(rest
) アトムの代わりに表示されます。
フォーマットが指定されていない場合、デフォルトのフォーマットは %
(objectname
) %
(objecttype
) %
(objectsize
) です。
--batch
が指定されている場合、または --batch-command
が contents
コマンドとともに使用されている場合、オブジェクト情報に続いてオブジェクトの内容(%
(objectsize
) バイトで構成)、その後に改行が続きます。
たとえば、カスタムフォーマットなしの --batch
は次の出力を行います。
<oid> SP <type> SP <size> LF <contents> LF
一方、--batch-check='%
(objectname
) %
(objecttype
) は次の出力を行います。
<oid> SP <type> LF
リポジトリ内のオブジェクトに解決できない名前が標準入力で指定された場合、cat-file
はカスタムフォーマットを無視して次の出力を行います。
<object> SP missing LF
--filter=
を介してフィルタリングされた名前が標準入力で指定された場合、cat-file
はカスタムフォーマットを無視して次の出力を行います。
<object> SP excluded LF
複数のオブジェクトを参照する可能性がある名前(曖昧な短い SHA)が指定された場合、cat-file
はカスタムフォーマットを無視して次の出力を行います。
<object> SP ambiguous LF
--follow-symlinks
が使用され、リポジトリ内のシンボリックリンクがリポジトリの外を指している場合、cat-file
はカスタムフォーマットを無視して次の出力を行います。
symlink SP <size> LF <symlink> LF
シンボリックリンクは絶対パス(/
で始まる)またはツリーのルートからの相対パスのいずれかになります。たとえば、dir/link が ../../foo
を指す場合、<symlink> は ../foo
になります。<size> はシンボリックリンクのバイト単位のサイズです。
--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]スイートの一部