被文件名大小写的问题搞晕了 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
MajestySolor
V2EX    git

被文件名大小写的问题搞晕了

  •  
  •   MajestySolor 2022-06-27 13:08:15 +08:00 3269 次点击
    这是一个创建于 1270 天前的主题,其中的信息可能已经有所发展或是发生改变。

    首先我的这个仓库的本地文件在 windows 系统上,所以是对大小写不敏感的

    因为陆续有好几个人加过东西,所以文件名没有统一规范,有的是全小写,有的是驼峰大小写,还有些文件的后缀名是大写

    然后最近我开了个新分支准备统一整理一下文件结构和文件名,把所有文件名和后缀名都改成了小写

    比如原来 MyFile.css 改成了 myfile.css ,logo.PNG 改成了 logo.png

    这些改动提交到新分支以后我无法切换回主分支了,要求我解决冲突

    我的 git config 已经设置了大小写敏感了

    然后我只能用笨办法,先删除 MyFile.css 提交,然后新建 myfile.css 再提交,确保追踪指向的文件是 myfile.css 而不是 MyFile.css

    那么问题来了,这种情况正确的做法是什么

    11 条回复    2022-06-28 17:57:18 +08:00
    lzgshsj
        1
    lzgshsj  
       2022-06-27 13:17:51 +08:00   1
    git mv?
    Opportunity
        2
    Opportunity  
       2022-06-27 13:29:07 +08:00   2
    NTFS 是大小写敏感的,大小写不敏感的是 windows 本身

    fsutil.exe file setCaseSensitiveInfo <path> enable

    https://docs.microsoft.com/en-us/windows/wsl/case-sensitivity
    fds
        3
    fds  
       2022-06-27 13:40:24 +08:00
    ```sh
    git mv foo foo2
    git mv foo2 FOO
    git commit -m "changed case of dir"
    ```
    摘自 https://stackoverflow.com/a/3011723/502851
    wenzichel
        4
    wenzichel  
       2022-06-27 14:19:24 +08:00
    所以现在我们的文件名都“使用 kebab-case ,后缀为小写”的方式!
    learnshare
        5
    learnshare  
       2022-06-27 14:45:32 +08:00
    使用 Git 时,要记得启用区分大小写
    simonhunter
        6
    simonhunter  
       2022-06-27 15:34:09 +08:00   1
    有幸被大小写的问题坑过……当时是修改了大小写名字后,远程仓库中存在两份文件。

    git clone 的时候 core.ignorecase 会根据系统设置自动设置,Windows 下默认是 true ,如果修改文件名大小写后,设置改为 false ,会出现改名后的文件的 untrack files ,如果提交了就出事了,远程会看到有大写文件名和小写文件名两份文件。

    最好的方法就还是用 git mv 去重命名文件名吧,如果已经是远程仓库存在两份文件的情况,比如 foo.js 和 Foo.js ,这时候用 git mv 会提示文件已存在,可以先把目标文件改成中间名,比如 foo.js.tmp ,然后删除 Foo.js ,再将 foo.js.tmp 改为 foo.js ,然后提交。其他人同步的时候会发现文件被删除,但实际上文件是被执行了一个未提交的 commit ,把 commit 还原即可。
    zhuweiyou
        7
    zhuweiyou  
       2022-06-27 15:46:31 +08:00
    一般来说我都是全小写连词的, 如果你要修改已有的应该用 git mv 命令.不需要删掉再提交.

    tsconfig.json 里面有一个 forceConsistentCasingInFileNames 字段,可以开启.这样如果引用了大小写不正确的文件会报错.
    sutra
        8
    sutra  
       2022-06-27 17:17:42 +08:00
    换成大小写敏感的文件系统,一劳永逸。(狗头
    SiLenceControL
        9
    SiLenceControL  
       2022-06-28 15:28:43 +08:00
    我是在 macos 上编译 Linux 的软件要求大小写敏感,也是搞的头疼
    ysc3839
        10
    ysc3839  
       2022-06-28 16:32:37 +08:00
    @SiLenceControL macOS 可以创建个磁盘镜像,格式化成区分大小写的文件系统,然后要编译的文件都放里面。
    SiLenceControL
        11
    SiLenceControL  
       2022-06-28 17:57:18 +08:00
    @ysc3839 我知道但是我有的时候直接在 download 文件夹里开算
    我是搞 CFD 的
    关于 nbsp;   帮助文档     自助推广系统     博客     API     FAQ     Solana     3292 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 04:29 PVG 12:29 LAX 20:29 JFK 23:29
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86