You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

git diff显示文件权限异常:实际775权限显示为755

问题根因

这不是Git的显示错误,是Git本身的权限跟踪设计决定的:Git不会完整存储Unix文件系统的全量权限位,仅对文件的可执行权限位做版本跟踪,内部只维护两种文件模式值:

  • 非可执行普通文件:存储值为100644,对应常规644权限
  • 可执行文件:存储值为100755,对应常规755权限

你本地给文件设置的775权限中,组写、其他用户写这两个权限位完全不在Git的跟踪范围内,Git只要检测到文件开启了可执行位,就会统一按内置存储的755模式展示diff结果,自然和你用系统命令查到的775实际权限不一致。

更换系统后才出现权限diff的原因

Git是否扫描文件权限差异由core.filemode配置项控制:

  • 在Ubuntu 22.04这类原生Linux系统上,如果仓库存放在ext4等原生支持Unix权限的文件系统中,该配置默认值为true,Git会自动对比工作区文件的可执行位和仓库内存储的权限值,存在差异就会展示在diff中
  • 如果你之前使用的系统是Windows、旧版WSL,或者仓库存放在NTFS/FAT等不原生支持Unix权限的文件系统上,Git会自动将该配置设为false,直接忽略所有权限类变更,自然不会出现相关diff记录。
处理方案

根据自己的需求二选一即可:

  • 不需要Git跟踪任何文件权限变更的话,直接在仓库根目录执行以下命令关闭检测,后续所有权限变化都不会出现在diff结果中:
git config core.filemode false
  • 仓库内存在脚本等需要保留可执行位跟踪的文件时,无需处理这个显示差异:你本地给文件配置的775里的额外写权限属于本地环境配置,不会被Git提交到远程仓库,也不会影响其他协作者拉取代码后的正常使用。

可以自行验证逻辑:对任意775权限的跟踪文件执行git ls-files --stage <文件路径>,就能看到Git实际存储的该文件模式固定为100755,和本地额外配置的组/其他用户写权限没有关系。

内容的提问来源于stack exchange,提问作者GLK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 12:57:17