You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何让Windows端Git忽略特定文件的Linux可执行权限变更

解决Windows端Git忽略特定文件权限变更的问题

这个跨平台Git权限的坑我也踩过!Windows的文件系统没有Linux那样的可执行权限位,导致Git在Windows检出Linux提交的755权限文件时,自动转成644,还一直把这个权限变化当成需要提交的修改,连git update-index --chmod=+x都不管用,拉取代码还被卡住。给你两个实用解决方案:

方法1:全局关闭Git权限检测(简单粗暴,适合全项目忽略权限)

如果你的项目里所有文件都不需要追踪权限变化,直接在Windows的Git Bash里执行这个命令:

git config --global core.fileMode false

这个配置会让Git完全忽略所有文件的权限变更,之后就不会再收到权限相关的修改提示了。但要注意:如果之后你确实需要修改某个文件的可执行权限,这个设置会让Git不追踪这个变更,所以只适合完全不需要管权限的场景。

方法2:针对特定文件忽略权限变更(精准控制)

如果只想让Git忽略某个特定文件(比如你的build_apk.sh)的权限变化,用.gitattributes来配置:

  1. 打开项目根目录,创建或编辑.gitattributes文件
  2. 在文件里添加一行:
build_apk.sh filemode=false

保存后,Git就会专门忽略这个文件的权限变化,其他文件的权限变更还是会正常追踪。

清理当前未提交的权限变更

不管用哪种方法,先把当前Git提示的权限变更撤销掉,避免影响后续操作:

git restore build_apk.sh

如果有多个这类文件,可以用:

git checkout HEAD -- .

⚠️ 注意:这个命令会撤销工作区所有未提交的修改,执行前确认没有其他需要保留的变更!

为什么git update-index --chmod=+x在Windows上没用?
因为Windows的NTFS/FAT文件系统没有独立的可执行权限位,Git在Windows上只是模拟权限设置,当你执行git update-index --chmod=+x时,Git尝试更新索引,但Windows文件系统不支持这个权限标记,所以操作会被忽略,文件权限还是会被自动转成644。

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

火山引擎 最新活动