Background:
在使用git 的时候,因为同事在同一个路径下存放了两个只可以用大小写区分但是其他字符全一样的文件,导致我的git Bash再也不能正常的处理流程了。
两个冲突的文件如下所示:
/d/03.srcs/04-codes_main/externLib/libRecon_so_v1.so
/d/03.srcs/04-codes_main/externLib/librecon_so_v1.so
因为在git 存储的时候,文件名被windows认为是一样的,所以总会导致只有一个文件被存储,另一个文件被覆盖。
解决方法:
这个问题的办法有两个:
1. 请同事帮忙修改文件名,然后重新clone最新的仓库;
2. 设置windows的操作系统为此路径可以区分大小写;
针对第一种办法,这里不赘述。针对第二种方法,有别人已经写了,但是我参考的时候总是失败,这里强调下设置方法的条件。
在windows cmd中执行命令行:
fsutil.exe file setCaseSensitiveInfo <path> disable
使用的条件:
1. 操作系统的版本:自 Windows 10 内部版本 17107 开始,支持按目录区分大小写;
2. <path> 必须是空目录;
状态查看:
fsutil.exe file queryCaseSensitiveInfo <path>
如果成功会有如下提示:
> fsutil file queryCaseSensitiveInfo D:\tmp\caseSensitive
Case sensitive attribute on directory D:\tmp\caseSensitive is enabled.
在已经成功的路径下创建新的路径会自动继承大小写区分的属性。