情景:

把git仓库从home文件夹移动到另一个磁盘(NTFS格式)的文件夹中,git status出现大量修改的文件,使用git diff只显示下图,即文件内容没有改变,只是文件的mode改变了.
在这里插入图片描述

原因分析

文件格式NTFS(window使用,linux也可以使用这种格式)没有Linux下丰富的权限设置。文件都被设置成了所有人员可读写执行。 git默认跟踪文件权限,因此当移动仓库导致文件权限改变后,git status提示修改.(另外,git只记录执行权限,而不记录读写权限。换句话说,644的文件和664的文件,对git来说是没区别的。)

解决办法

一般而言,我们不关心文件权限的改变,只关心文件内容的改变.因此要设置git不跟踪文件权限.

  1. 先用cat .git/config查看当前仓库的配置,出现filemode=true则表明跟踪了文件权限
    在这里插入图片描述
  2. 命令行输入git config core.filemode false即可将filemode设置为false,此时git status就不会出现因文件权限改变而导致的修改了.

上面是针对当前仓库的设置,也可以设置全局,对所有仓库都不跟踪文件权限.但是可能并不起作用,还是得对每个仓库单独设置

  • 先查看一下全局配置:git config --global -l,默认情况下core.filemode=true
  • 命令行输入git config --global core.fileMode false
  • 设置全局后,新建git仓库,并不起作用,用cat .git/config查看配置, 看到filenode=true
    在这里插入图片描述
    git config -l查看配置,看到filenode=falsefilenode=true,上面的filenode=false应该是全局设置的,下面的filenode=true是建立仓库时默认设定的,最后还是本地设置filenode=true起了作用,这里有待进一步探索解决办法
    在这里插入图片描述

参考链接

https://blog.csdn.net/zhezhebie/article/details/84853608
https://learnku.com/laravel/t/5340/linux-solution-to-modify-the-file-permissions-caused-by-the-git-record-file-changes
https://cloud.tencent.com/developer/article/1560532

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐