跳至主要內容

git cat-file

Sankgao约 538 字大约 2 分钟命令集Git

描述

git cat-file 用于查看 Git 仓库中的对象(如:文件内容(blob)、目录树(tree)、提交(commit)等)的内容、类型以及大小。这个命令提供了对 Git 仓库内部对象直接访问的能力,使得用户能够查看和操作这些对象,而无需使用更高层级的 Git 命令。

选项

选项描述
-t不显示内容,而是显示由 <对象> 标识的对象类型
-s不显示内容,而是显示由 <对象> 标识的对象大小
-e如果 <对象> 存在且是有效对象,则以零状态退出
-p根据 <对象> 的类型以可读的格式打印其内容。对于 blob 对象,这会直接显示文件内容;对于 tree 和 commit 对象,这会以一种格式化的方式显示其详细信息
-k, --killed显示那些被 Git 忽略的文件
-s, --stage显示暂存文件的暂存信息
-u, --unmerged显示那些存在未解决冲突的文件
-x <pattern>, --exclude=<pattern>排除与指定模式匹配的文件
-X <file>, --exclude-from=<file>从给定文件中读取排除模式
--exclude-standard添加 Git 默认的标准排除模式

示例

查看日志的详细信息:

git log -1 --pretty=raw

commit ffda3db0af4761b39ffb0ec382ec97629b9ac8d2
tree f58da9a820e3fd9d84ab2ca2f1b467ac265038f9
parent 2a53fa42f95ab1bb3ee93b8282fe61703553893f
author Sank Gao <sankgao@163.com> 1718332249 +0800
committer Sank Gao <sankgao@163.com> 1718332249 +0800

    which version checked in?

查看仓库对象类型

例如:查看 <对象> 的类型。

git cat-file -t ffda3db 

commit

查看仓库对象内容

例如:查看 commit 对象内容。

git cat-file -p ffda3db

tree f58da9a820e3fd9d84ab2ca2f1b467ac265038f9
parent 2a53fa42f95ab1bb3ee93b8282fe61703553893f
author Sank Gao <sankgao@163.com> 1718332249 +0800
committer Sank Gao <sankgao@163.com> 1718332249 +0800

which version checked in?

例如:查看 tree 对象内容。

git cat-file -p f58da9a

100644 blob fd3c069c1de4f4bc9b15940f490aeb48852f3c42    welcome.txt

例如:查看 parent 对象内容。

git cat-file -p 2a53fa4

tree 1ee1c14db52826f21b98290d42133064110b03e5
parent 81e37d1daa98fb2085396a0d310dbce718552247
author Sank Gao <sankgao@163.com> 1718331148 +0800
committer Sank Gao <sankgao@163.com> 1718331148 +0800

who does commit?

例如:查看 blob 对象内容。

git cat-file -p fd3c069

Hello.
Nice to meet you.

从历史中恢复文件

例如:从历史(前一次提交)中恢复 welcome.txt 文件到当前工作区中。

git cat-file -p HEAD~1:welcome.txt > welcome.txt