セットアップと設定
プロジェクトの取得と作成
基本的なスナップショット
ブランチとマージ
プロジェクトの共有と更新
検査と比較
パッチ
デバッグ
メール
外部システム
サーバー管理
ガイド
- gitattributes
- コマンドラインインターフェースの規則
- 日常的なGit
- よくある質問 (FAQ)
- 用語集
- フック
- gitignore
- gitmodules
- リビジョン
- サブモジュール
- チュートリアル
- ワークフロー
- すべてのガイド...
管理
低レベルコマンド
- 2.46.2 → 2.47.0 変更なし
-
2.46.1
09/13/24
- 2.42.2 → 2.46.0 変更なし
-
2.42.1
11/02/23
-
2.42.0
08/21/23
- 2.40.1 → 2.41.2 変更なし
-
2.40.0
03/12/23
- 2.38.1 → 2.39.5 変更なし
-
2.38.0
10/02/22
- 2.36.1 → 2.37.7 変更なし
-
2.36.0
04/18/22
- 2.34.1 → 2.35.8 変更なし
-
2.34.0
11/15/21
- 2.32.1 → 2.33.8 変更なし
-
2.32.0
06/06/21
- 2.28.1 → 2.31.8 変更なし
-
2.28.0
07/27/20
- 2.21.1 → 2.27.1 変更なし
-
2.21.0
02/24/19
- 2.19.1 → 2.20.5 変更なし
-
2.19.0
09/10/18
- 2.17.0 → 2.18.5 変更なし
-
2.16.6
12/06/19
- 2.15.4 変更なし
-
2.14.6
12/06/19
- 2.12.5 → 2.13.7 変更なし
-
2.11.4
09/22/17
- 2.10.5 変更なし
-
2.9.5
07/30/17
- 2.7.6 → 2.8.6 変更なし
-
2.6.7
05/05/17
-
2.5.6
05/05/17
- 2.1.4 → 2.4.12 変更なし
-
2.0.5
12/17/14
概要
git cat-file <type> <object> git cat-file (-e | -p) <object> git cat-file (-t | -s) [--allow-unknown-type] <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つのモードで動作できます。
非バッチモードでは、コマンドはコマンドラインで指定されたオブジェクトに関する情報を提供します。
バッチモードでは、引数は標準入力から読み取られます。
オプション
- <オブジェクト>
-
表示するオブジェクトの名前。オブジェクト名を指定する方法のより完全なリストについては、gitrevisions[7]の「リビジョンの指定」セクションを参照してください。
- -t
-
内容の代わりに、
<オブジェクト>
によって識別されるオブジェクトタイプを表示します。 - -s
-
内容の代わりに、
<オブジェクト>
によって識別されるオブジェクトサイズを表示します。--use-mailmap
オプションと一緒に使用すると、メールマップメカニズムを使用してidentを置換した後の更新されたオブジェクトのサイズが表示されます。 - -e
-
<オブジェクト>
が存在し、有効なオブジェクトである場合、ゼロステータスで終了します。<オブジェクト>
の形式が無効な場合、ゼロ以外のステータスで終了し、stderrにエラーを出力します。 - -p
-
<オブジェクト>
の内容をそのタイプに基づいて整形表示します。 - <タイプ>
-
通常、これは
<オブジェクト>
の実際のタイプと一致しますが、指定された<オブジェクト>
から簡単に逆参照できるタイプを要求することも許可されます。たとえば、それを含むコミットオブジェクトである<オブジェクト>
で「ツリー」を要求したり、それを指すタグオブジェクトである<オブジェクト>
で「blob」を要求したりすることです。 - --[no-]mailmap
- --[no-]use-mailmap
-
メールマップファイルを使用して、作成者、コミッター、およびタグ付け者の名前とメールアドレスを正規の実際の名前とメールアドレスにマップします。 git-shortlog[1]を参照してください。
- --textconv
-
textconvフィルターによって変換された内容を表示します。この場合、
<path>
のインデックスに記録されているコンテンツにフィルターを適用するために、<オブジェクト>
は<tree-ish>:<path>
または:<path>
の形式である必要があります。 - --filters
-
指定された
<path>
(つまり、smudgeフィルター、行末変換など)の現在の作業ツリーで設定されているフィルターによって変換された内容を表示します。この場合、<オブジェクト>
は<tree-ish>:<path>
または:<path>
の形式である必要があります。 - --path=<path>
-
--textconv
または--filters
で使用する場合、blobの由来となったリビジョンを特定するのが難しい場合などに、オブジェクト名とパスを個別に指定できるようにします。 - --batch
- --batch=<format>
-
stdinで提供される各オブジェクトのオブジェクト情報と内容を出力します。
--textconv
、--filters
、または--use-mailmap
以外の他のオプションまたは引数と組み合わせることはできません。-
--textconv
または--filters
と一緒に使用する場合、入力行はスペースで区切られたパスを指定する必要があります。詳細は、以下の「バッチ出力」セクションを参照してください。 -
--use-mailmap
と一緒に使用する場合、コミットオブジェクトとタグオブジェクトの場合、出力の内容部分はメールマップメカニズムを使用して置換されたIDを示し、出力の情報部分はオブジェクトが実際に置換IDを記録した場合のサイズを示します。
-
- --batch-check
- --batch-check=<format>
-
stdinで提供される各オブジェクトのオブジェクト情報を出力します。
--textconv
、--filters
、または--use-mailmap
以外の他のオプションまたは引数と組み合わせることはできません。-
--textconv
または--filters
と一緒に使用する場合、入力行はスペースで区切られたパスを指定する必要があります。詳細は、以下の「バッチ出力」セクションを参照してください。 -
--use-mailmap
と一緒に使用する場合、コミットオブジェクトとタグオブジェクトの場合、出力されるオブジェクト情報は、記録されているIDがメールマップメカニズムによって置換された場合のオブジェクトのサイズを示します。
-
- --batch-command
- --batch-command=<format>
-
stdinからコマンドと引数を読み取るコマンドモードに入ります。
--buffer
、--textconv
、--use-mailmap
、または--filters
とのみ組み合わせることができます。-
--textconv
または--filters
と一緒に使用する場合、入力行はスペースで区切られたパスを指定する必要があります。詳細は、以下の「バッチ出力」セクションを参照してください。 -
--use-mailmap
と一緒に使用する場合、コミットオブジェクトとタグオブジェクトの場合、contents
コマンドはメールマップメカニズムを使用して置換されたIDを示し、info
コマンドはオブジェクトが実際に置換IDを記録した場合のオブジェクトのサイズを示します。
--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
は、リポジトリに複数回格納されている場合でも、各オブジェクトを1回だけ表示することに注意してください。 - --allow-unknown-type
-
-s
または-t
が、不明なタイプの壊れた/破損したオブジェクトを照会できるようにします。 - --follow-symlinks
-
--batch
または--batch-check
を使用すると、tree-ish:path-in-treeの形式の拡張SHA-1式でオブジェクトを要求するときに、リポジトリ内のシンボリックリンクをたどります。リンク自体に関する出力ではなく、リンク先のオブジェクトに関する出力を提供します。シンボリックリンクがtree-ishの外部を指している場合(たとえば、/foo
へのリンク、またはルートレベルの../foo
へのリンク)、リンクのtree-ishの外部にある部分が印刷されます。このオプションは、ツリー内のオブジェクトではなく、インデックス内のオブジェクト(たとえば、
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行ずつ読み込み、読み込んだ順序と同じ順序でオブジェクトに関する情報を出力します。デフォルトでは、行全体がgit-rev-parse[1]に渡されたかのように、オブジェクトとして扱われます。
--batch-command
が指定された場合、cat-file
は標準入力からコマンドを1行ずつ読み込み、指定されたコマンドに基づいて情報を出力します。--batch-command
では、オブジェクトの後に続くinfo
コマンドは--batch-check
と同じようにオブジェクトに関する情報を出力し、オブジェクトの後に続くcontents
コマンドは--batch
と同じように内容を出力します。
カスタム<format>
を使用して、各オブジェクトに表示される情報を指定できます。<format>
は、%(atom)
形式のプレースホルダーが展開され、改行が追加された状態で、各オブジェクトに対してそのまま標準出力にコピーされます。利用可能なアトムは以下のとおりです。
-
objectname
-
オブジェクト名の完全な16進数表現。
-
objecttype
-
オブジェクトのタイプ(
cat-file -t
の出力と同じ)。 -
objectsize
-
オブジェクトのサイズ(バイト単位)(
cat-file -s
の出力と同じ)。 -
objectsize:disk
-
オブジェクトがディスク上で占めるサイズ(バイト単位)。以下の「注意事項」セクションのディスク上のサイズに関する注意事項を参照してください。
-
deltabase
-
オブジェクトがディスク上でデルタとして保存されている場合、これはデルタベースオブジェクト名の完全な16進数表現に展開されます。そうでない場合は、ヌルOID(すべてゼロ)に展開されます。以下の「注意事項」を参照してください。
-
rest
-
このアトムが出力文字列で使用されている場合、入力行は最初の空白境界で分割されます。その空白より前のすべての文字はオブジェクト名と見なされ、最初の空白の連続の後にある文字(つまり、行の「残り」)は
%(rest)
アトムの代わりに 出力されます。
フォーマットが指定されていない場合、デフォルトのフォーマットは%(objectname) %(objecttype) %(objectsize)
です。
--batch
が指定されている場合、または--batch-command
が`contents`コマンドと共に使用されている場合、オブジェクト情報の後にオブジェクトの内容(`%(objectsize)`バイトで構成)が続き、その後に改行が続きます。
例えば、カスタムフォーマットなしの--batch
は以下を出力します。
<oid> SP <type> SP <size> LF <contents> LF
(例示のための出力は省略)
<oid> SP <type> LF
一方、--batch-check='%(objectname) %(objecttype)'
は以下を出力します。
<object> SP missing LF
(例示のための出力は省略)
<object> SP ambiguous LF
標準入力で指定された名前がリポジトリ内のオブジェクトに解決できない場合、cat-file
はカスタムフォーマットを無視し、以下を出力します。
symlink SP <size> LF <symlink> LF
(エラーメッセージの出力は省略)
複数のオブジェクトを参照する可能性のある名前(あいまいな短いSHA)が指定された場合、cat-file
はカスタムフォーマットを無視し、以下を出力します。
<object> SP missing LF
(エラーメッセージの出力は省略)
dangling SP <size> LF <object> LF
--follow-symlinks
が使用され、リポジトリ内のシンボリックリンクがリポジトリ外を指している場合、cat-file
はカスタムフォーマットを無視し、以下を出力します。
loop SP <size> LF <object> LF
シンボリックリンクは絶対パス(`/`で始まる)またはツリールートからの相対パスになります。たとえば、dir/linkが`../../foo`を指している場合、`<symlink>`は`../foo`になります。`<size>`はシンボリックリンクのサイズ(バイト単位)です。
notdir SP <size> LF <object> LF
--follow-symlinks
が使用されている場合、以下のエラーメッセージが表示されます。
は、要求された初期シンボリックリンクが存在しない場合に出力されます。
は、初期シンボリックリンクは存在するが、それが(推移的に)指しているものが存在しない場合に出力されます。
は、シンボリックリンクのループ(または解決に40以上のリンク解決を必要とするシンボリックリンク)に対して出力されます。
は、シンボリックリンクの解決中に、ファイルがディレクトリ名として使用された場合に出力されます。