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

Git追踪文件权限的原因、权限恢复及关闭fileMode的影响

Git文件权限追踪相关问题解答

一、Git追踪文件权限变更的原因

  • Git默认在Unix-like系统(包括macOS)下会追踪文件的可执行权限位(即权限中的x标识),这是为了维护脚本类文件的可执行属性。
  • 你的仓库最初在Windows创建,Windows文件系统不支持Unix权限体系,因此之前同步操作不会触发权限追踪;但切换到macOS后,Git会识别本地文件的Unix权限,当从VPS(Unix-like系统)下载的备份文件权限与Git历史记录不一致时,就会被标记为已修改。
  • 此次VPS上的文件权限因故变更,归档后同步到本地,导致本地文件权限与Git仓库中记录的权限不匹配,触发了Git的权限追踪机制。

二、如何避免Git追踪权限变更

针对当前仓库临时关闭

在本地仓库目录下执行以下命令,仅对当前仓库生效:

git config core.fileMode false

全局关闭(所有本地仓库生效)

如果希望所有本地Git仓库都忽略权限变更,执行:

git config --global core.fileMode false

三、恢复文件权限至历史提交状态

恢复所有文件权限

执行以下命令,将工作区所有文件的权限重置为最近一次提交(HEAD)中的记录:

git checkout HEAD -- .

恢复单个文件权限

仅恢复特定文件的权限,将命令中的.替换为目标文件路径即可:

git checkout HEAD -- path/to/target/file

四、关闭core.fileMode的负面影响

  • 丢失可执行文件的权限管理:如果项目中有Shell、Python等需要可执行权限的脚本,关闭该选项后,Git无法追踪这些文件的x权限变更,其他协作成员拉取代码后可能无法直接运行脚本,需手动添加权限。
  • 跨平台协作风险:若团队中有成员使用Unix-like系统,他们可能依赖Git同步可执行文件的权限,关闭后权限变更无法被同步,可能导致运行环境异常。
  • 合法权限修改无法同步:后续如果需要为文件设置合法的可执行权限,关闭fileMode后Git不会记录该变更,其他成员无法获取正确的权限配置,引发不必要的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 15:18:25