直接在项目根目录执行 git config core.filemode false 即可让 Git 忽略文件权限变化,避免把 chmod 操作误判为“文件被修改”;这是因为 Linux 下文件权限属于 Git 跟踪的元信息,chmod 会触发 mode 变更导致假冲突,配置后需 git restore . 清除误报状态。
直接在项目根目录执行 git config core.filemode false 即可让 Git 忽略文件权限变化,避免把 chmod 操作误判为“文件被修改”。
Linux 下文件权限(如 644、755)属于 Git 跟踪的元信息之一。当你用 chmod 批量调整 Laravel 的 storage 或 bootstrap/cache 目录权限时,Git 会把每个文件的 mode 变更(比如从 644 → 755)记录为“已修改”。即使内容没动,git status 也会列出大量文件,git pull 前也可能因“本地修改未提交”而拒绝更新。
推荐按作用范围分情况设置:
git config core.filemode false
git config --global core.filemode false
git config core.filemode,输出 false 即成功;也可查看 .git/config 中是否出现 filemode = false
这个设置只影响 Git 对“文件权限变更”的感知,不影响实际权限行为:
chmod
git reset --hard 或 git restore . 清除暂存区状态(确保无真正内容修改)--global 但当前项目仍报错,检查 .git/config 是否有同名配置覆盖了全局设置——局部配置优先级更高极少数场景需要严格管控可执行权限(例如部署脚本、二进制工具),此时应保留 core.filemode true,并通过 git update-index --chmod=+x xxx.sh 显式声明权限变更。普通 Web 项目(如 Laravel)基本无需此操作。