1
在Git中,通过命令git ls-files -s
返回结果的典型行类似`git ls-files -s`输出中不同字段的含义是什么?
100755 be2c2e9b0966253096472d4b482c458bc892e493 0 .gitignore
什么这些字段的含义?
在Git中,通过命令git ls-files -s
返回结果的典型行类似`git ls-files -s`输出中不同字段的含义是什么?
100755 be2c2e9b0966253096472d4b482c458bc892e493 0 .gitignore
什么这些字段的含义?
git ls-files
只是输出除非--stage
指定 在这种情况下输出的文件名:[<tag> ]<mode> <object> <stage> <file>
(该--stage
标志等同于-s
)
这些字段是什么意思?
<mode>
是模式位。 How to read the mode field of git-ls-tree's output<object>
<object>
是相应斑点的SHA,即所讨论文件的内容的唯一标识符。<stage>
是阶段编号,通常为0
,但对带有合并冲突的文件取非零值。<file>
只是文件的路径。你也问,one of your follow-up comment,
有什么
<object>
和<file>
之间的关系?
他们是完全独立的,因为只有一个文件(而不是它的路径/文件名)的内容用于生成与它相关的哈希值。为了说服的是自己,你可以在玩具仓库进行了以下实验:
# set things up
$ mkdir testgit
$ cd testgit/
$ git init
# write the same contents to two files
$ printf "foo\n" > README.md
$ printf "foo\n" > bar.txt
# stage the two files and run git ls-files
$ git add .
$ git ls-files -s
100644 257cc5642cb1a054f08cc83f2d943e56fd3ebe99 0 README.md
100644 257cc5642cb1a054f08cc83f2d943e56fd3ebe99 0 bar.txt
需要注意的是,即使这两个文件有不同的名称,它们具有相同的SHA,因为它们具有相同的内容。
“
@qazwsx该对象是文件内容的散列,也是用于存储文件内容的git对象的地址(因为git本质上是一个内容可寻址的文件系统,它恰好具有构建的版本控制系统在它的上面)。 – hobbs 2015-01-26 22:16:41
由“