在git中,cat-file
在此命令中代表什么?
$ git cat-file <...>
我的第一个想法是“连接文件”,因为Unix命令cat
代表“连接”,但这与git cat-file
的功能不对应。
答案 0 :(得分:7)
读取git对象的内容(或blob)
git cat-file -p <SHA1>
阅读其类型
git cat-file -t <SHA1>
答案 1 :(得分:5)
虽然cat
确实代表“连接”,但它实际上只是显示一个或多个文件,它们在cat
的命令行参数中出现。在Linux或* nix系统上查看文件内容的常见模式是:
cat <file>
cat
和Git cat-file
之间的主要区别在于它只显示一个文件(因此-file
部分)。 Git的cat-file
并不真正代表“连接”;它只是对cat
命令行为的引用。
git-cat-file
- 提供存储库对象的内容或类型和大小信息
从技术上讲,如果使用批量输出模式,可以使用git cat-file
连接文件:
批量输出
如果给出
--batch
或--batch-check
,cat-file
将从stdin中读取对象,每行一个,并打印有关它们的信息。默认情况下,整行被视为一个对象,就好像它被送到git-rev-parse
[1]。
答案 2 :(得分:0)
添加到@Matoeil答案,
您只需要在<SHA1>
中指定5个字符。
$ tree .git/
.git/
├── COMMIT_EDITMSG
├── HEAD
├── config
├── description
├── hooks
│ ├── applypatch-msg.sample
│ ├── commit-msg.sample
│ ├── fsmonitor-watchman.sample
│ ├── post-update.sample
│ ├── pre-applypatch.sample
│ ├── pre-commit.sample
│ ├── pre-push.sample
│ ├── pre-rebase.sample
│ ├── pre-receive.sample
│ ├── prepare-commit-msg.sample
│ └── update.sample
├── index
├── info
│ └── exclude
├── logs
│ ├── HEAD
│ └── refs
│ └── heads
│ ├── master
│ └── testBranch
├── objects
│ ├── 1e
│ │ └── e2a78c0b40dd8e5c6b08e31171a3ce1e8d931b
│ ├── 29
│ │ └── 33b9017f79a27ff5ad3c4e154f67b44ae8482c
│ ├── 4a
│ │ └── 6a376085b9b3b8e6e73d2cdcc5281cf6915c58
│ ├── 4b
│ │ └── 825dc642cb6eb9a060e54bf8d69288fbee4904
│ ├── 7e
│ │ └── 6965a8b2ff07da3e632a24ee024b9d2ec5245d
│ ├── ae
│ │ └── 853f7ece778281c463c1f0c603ef9d47a425b7
│ ├── info
│ └── pack
└── refs
├── heads
│ ├── master
│ └── testBranch
└── tags
17 directories, 28 files
$ git cat-file -t ae853
tree
$ git cat-file -p ae853
100644 blob 7e6965a8b2ff07da3e632a24ee024b9d2ec5245d fil1.txt
here解释得很好。