aiyoudiao aiyoudiao
  • JavaScript
  • Vue
  • React
  • 低代码
  • 线性系统
  • 暂未分类
  • LeetCode
  • 算法
  • 数据结构
  • 设计模式
  • Other
  • PMP
  • Office
  • 面试
  • Bash
  • 流年往事
  • 经验片段
  • 读书杂感
  • 归档
  • 分类
  • 标签
  • 简介
  • 收藏
  • 有趣
  • 文档

码二

扫微信二维码,认识一下码二吧😉。
  • JavaScript
  • Vue
  • React
  • 低代码
  • 线性系统
  • 暂未分类
  • LeetCode
  • 算法
  • 数据结构
  • 设计模式
  • Other
  • PMP
  • Office
  • 面试
  • Bash
  • 流年往事
  • 经验片段
  • 读书杂感
  • 归档
  • 分类
  • 标签
  • 简介
  • 收藏
  • 有趣
  • 文档
  • 流年往事

  • 经验片段

    • 2022年2月21日
    • 2022年3月16日
    • 2022年3月21日
    • 2022年3月23日
    • 2022年4月9日
    • 2022年4月10日
    • 2022年4月15日
    • 2022年4月27日
      • 拉取仓库代码时遇到的问题
      • 先解决win10操作系统中忽略文件、目录名大小写的问题
      • 再解决git忽略文件、目录名大小写的问题
      • 再解决vscode忽略文件、目录名大小写的问题
      • 总结
        • 扩展
    • 2022年4月28日
    • 2022年5月6日
    • 2022年5月16日
    • 2022年5月20日
    • 2022年6月16日
    • 2022年6月22日
    • 2022年6月23日
    • 2022年8月17日
    • 2022年10月12日
    • 2022年11月6日
    • 2022年11月8日
    • 2022年11月21日
    • 2022年12月06日
    • 2022年12月09日
    • 2022年12月27日
    • 2023年01月21日
    • 2023年02月03日
    • 2023年03月19日
    • 2023年03月26日
    • 2023年04月12日
    • 2023年05月03日
    • 2023年06月04日
  • 读书杂感

  • 历程
  • 经验片段
aiyoudiao
2022-04-27

2022年4月27日

# 拉取仓库代码时遇到的问题

今天拉取仓库代码时遇到一个问题,项目中有两个同级目录下大小写不同的文件夹,比如 WorkProject 和 workProject。
当你在windows 10 操作系统中拉取的时候,发现报错了,说不能有两个同名的目录或者文件。于是乎我研究了一下,发现在win10操作系统中是忽略文件、目录名大小写的,git中也是这样的,甚至vscode中也是如此。

# 先解决win10操作系统中忽略文件、目录名大小写的问题

https://cloud.tencent.com/developer/ask/sof/252591 (opens new window)

调整区分大小写 (opens new window)

先通过管理员权限打开powershell,然后敲如下命令,用来安装 Windows Subsystem for Linux,然后控制台就会显示让你重启系统,选择y 回车。

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

重启电脑后,通过fsutil.exe 开启指定目录的大小写敏感。

# 比如 fsutil.exe file SetCaseSensitiveInfo E:\work-2022 enable
# 这样 E:\work-2022目录下就会开启大小写敏感模式了
fsutil.exe file SetCaseSensitiveInfo <你要开启大小写敏感的目录> enable

# 再解决git忽略文件、目录名大小写的问题

通过配置git的core模块,就能够让git正常拉取同级目录下有两个大小写不同的文件夹的项目了。

# 在当前git仓库目录下 设置 关闭git忽略文件、目录名大小写
git config core.ignorecase false

# 在全局设置 关闭git忽略文件、目录名大小写
git config --global core.ignorecase false

# 再解决vscode忽略文件、目录名大小写的问题

抱歉暂时没找到,似乎没法解决。但从逻辑上来说应该也可以解决。
你会发现一个奇怪的现象,明明windows资源目录中有,但是vscode只能识别小写的文件目录,而大写的识别不出来,这个就很头痛了。最好还是整理一下文件目录名,要么改目录名,要么删除掉一个。
规范起来,vscode就不会出现这种问题了。

# 总结

一个文件夹下存在 大小写被忽略后相同的文件或文件名会造成操作系统、git、编辑器层面上的bug。这是不规范命名和早期不注意导致的问题,非常难以解决。
比如你先创建了一个 about目录,后面你把about改为About,再提交到git仓库中,实际上git会认为你新增了一个About,而原来的about还会存在git仓库中。

当然也可以通过其它方式解决,比如把项目代码拉过来,这时会出现一个about和About,你把这两个文件夹都删掉,然后提交代码。
这时远程仓库中的about和About都会被删除,最后你再把你想要的那个About从回收站中找回来,然后再把这个About提交上去即可。

当然这么麻烦的处理步骤实在不可取,预防胜于检查,所以一开始就要注意这个点,否则出了问题也很难整。比如我处理这个问题就花了一个多小时,非常的心累。

# 扩展

当你使用了git config core.ignorecase false 之后,把修改大小写的文件夹也改了,这时推送到远程分支,会发现远程分支上出现大小写文件夹重复的情况。
这时就要删除多余重复的文件,比如你有about 和 About两个,你想删除about然后保留About,可以这样做。

# 通过git删除缓存中指定目录名称下面所有的文件(包括文件名)
git rm --cached src/components/about -r

# 如果要删除多个目录的话,可以这样,这样就删除了 about about2 about3 这三个目录
git rm --cached src/components/about src/components/about2 src/components/about3 -r

删除成功后,控制台就会显示如下内容。这是告诉你删除了指定目录下的所有文件。

rm 'src/components/about/index.scss'
rm 'src/components/about/index.tsx'

最后你推送到远程分支上,就成功了。

#代码片段#git#windows
上次更新时间: 10年18月2023日 01时57分53秒
2022年4月15日
2022年4月28日

← 2022年4月15日 2022年4月28日 →

最近更新
01
01.数据结构导论一览.md
10-16
02
30.2023年06月04日.md
06-04
03
08.与测量相关.md
05-06
更多文章>
Theme by Vdoing | Copyright © 2017-2023 aiyoudiao 码二 备案号: 鄂ICP备2022002654号-1