Mac系统中git出现异常的未提交修改文件

问题说明

最近在搭建webrtc相关的内容的时候,将资源拉到本地后发现,有未提交的修改。现象是执行同步命令的时候提示有未提交修改而报错。

$ gclient sync
Syncing projects:  96% (29/30) src/third_party/errorprone/lib

src/third_party/android_ndk (ERROR)
----------------------------------------
[0:00:04] Started.
----------------------------------------
Error: 16>
16> ____ src/third_party/android_ndk at 635bc380968a76f6948fee65f80a0b28db53ae81
16>     You have unstaged changes.
16>     Please commit, stash, or reset.

去到对应的目录中执行git status之后,发现是这样一些文件有修改:

$ git status
HEAD detached at 635bc380
Changes not staged for commit:
  (use "git add ..." to update what will be committed)
  (use "git checkout -- ..." to discard changes in working directory)

    modified:   sysroot/usr/include/linux/netfilter/xt_connmark.h
    modified:   sysroot/usr/include/linux/netfilter/xt_dscp.h
    modified:   sysroot/usr/include/linux/netfilter/xt_mark.h
    modified:   sysroot/usr/include/linux/netfilter/xt_rateest.h
    modified:   sysroot/usr/include/linux/netfilter/xt_tcpmss.h
    modified:   sysroot/usr/include/linux/netfilter_ipv4/ipt_ecn.h
    modified:   sysroot/usr/include/linux/netfilter_ipv4/ipt_ttl.h
    modified:   sysroot/usr/include/linux/netfilter_ipv6/ip6t_hl.h

no changes added to commit (use "git add" and/or "git commit -a")

这些文件理论上刚刚从远端拉回来,不应该被修改过,就很奇怪。

问题原因

经过查询,大概问题的原因在于,MacOS使用的apfs文件系统是大小写不敏感的。而Linux的文件系统hfs是大小写敏感的。

在这个文件夹中不仅存在了大写名字的这些文件,也同时存在了对应的小写名字的对应的文件。所以apfs无法将这两个文件区分开来,导致了这种问题。

其实MacOS也可以使用大小写敏感的文件系统,但是就需要在创建磁盘镜像的时候特殊设置一下。如参考资料3中所述方法。

你可能感兴趣的:(Mac系统中git出现异常的未提交修改文件)