我正在查看 GitHub 上某个存储库的提交所引入的差异,其中一个文件的文件名后附加了一个神秘的字符串(对我来说)。文件名是 gulpfile.js,后面跟着 100755 --> 100644。有人知道这是什么意思吗?
答案1
基本上,这意味着提交从文件中删除了“可执行”位,即chmod -x
由提交作者完成。
这些数字的格式与 Unix stat() 中的 st_mode 相同。
第一个
10
(八进制)表示常规文件。(04 是目录,12 是符号链接,16 是 Git 特定值,表示子模块。)接下来的
0644
(八进制)是常规的 Unix 权限 - 该文件可供所有人读取,其所有者可写入。与此相比,0755
也意味着该文件是可执行文件被大家。
(请注意,Git 并不存储真正的权限,而只存储一个类似权限:它总是如果文件可执行则存储 0755,如果不是则存储 0644,对于目录和其他非文件对象则存储 0000。)
您可以通过运行查看本地 Git 存储库的这些值git ls-tree <treeish>
,例如:
$ git ls-tree HEAD 100644 blob e42c7ff372783714c873fb8f33c7c04fba1d7e02 Plain_file.txt 040000 树 c909f07b68d787edabba4384f105fc37ed942e17 This_is_a_directory 120000 blob ba6b7e01db412305ff893b6c1cf279094f5656ac 符号链接至文件.txt 160000 提交 6a41d623cdd0f93f16dff679963d2a5b4f856bdb Some_submodule 100755 blob fe7ce105da1306e8648d8e2849cc3c72ca512d20 An_executable_script.sh