Git中“create mode 10064 <file>”是什么?还有哪些模式及含义?
Git 中文件模式(create mode)的含义解析
create mode 10064 <file> 里的数字是Git存储的文件权限与类型标识,和Unix系统的文件权限规则对应,整体分为两部分:前三位代表文件类型,后三位代表权限位。
10064 具体含义
- 前三位
100:标识这是一个普通文件(非链接、非目录、非子模块) - 后三位
644:对应Unix权限:- 所有者(owner):读+写权限(4+2=6)
- 所属组(group):仅读权限(4)
- 其他用户(others):仅读权限(4)
这是Git中普通文本文件的默认模式,大部分代码、文档类文件都会用这个模式。
其他常见模式及含义
Git只追踪对版本控制有意义的文件类型和权限,常见模式如下:
100755:普通可执行文件
- 前三位
100仍表示普通文件 - 后三位
755:所有者读+写+执行(4+2+1=7),组和其他用户读+执行(4+1=5) - 用于脚本、编译后的可执行程序等需要运行权限的文件。
- 前三位
120000:符号链接(软链接)
- 前三位
120标识这是软链接 - 后三位
000无实际权限意义,因为软链接的权限完全跟随目标文件 - Git仅存储软链接指向的路径,而非实际文件内容。
- 前三位
160000:Git子模块(submodule)
- 前三位
160标识这是子模块 - 后三位
000无实际权限意义 - 代表当前仓库引用了另一个独立的Git仓库,存储的是子模块的特定提交哈希。
- 前三位
040000:目录
- 前三位
040标识这是目录 - Git本身不直接存储空目录,只有当目录下有被追踪的文件时,才会间接记录这个模式,通常不会在提交信息里直接看到。
- 前三位
补充说明
Git不会像Unix系统那样记录所有细粒度权限(比如SUID、SGID位),它只保留对代码运行、仓库结构有影响的信息。比如普通文件的可执行权限是Git重点追踪的,而其他权限位的细微变化(比如所有者读权限改成写),Git可能会忽略(取决于本地配置)。
内容的提问来源于stack exchange,提问作者akshay.gjha
相关产品推荐
相关产品推荐

