You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用git mv移动文件后,GitHub仅Linux/Mac环境文件缺失求助

Git跨平台大小写问题导致迁移文件不显示的排查与解决

问题描述

我负责维护GitHub上的Reko反编译器仓库。近期使用git mv将仓库中src/Analysis目录的文件迁移至src/Core/Analysis,推送至GitHub后出现以下异常:

  • Windows CI构建正常,但Linux和MacOS CI失败,迁移的文件未出现在src/Core/Analysis目录,仅显示被删除状态
  • 在GitHub查看master分支HEAD时,src/Core/Analysis仅显示6个文件,但本地Windows环境能看到至少十几个文件

已尝试的操作:

  • 在Windows机器上执行干净的git clone,文件正常存在
  • 在同一机器的WSL中执行干净的git clone,文件正常存在
  • 检查.gitignore文件,未发现意外添加的规则
  • 创建新提交修改所有缺失文件,试图强制文件显示,但GitHub仓库中仍看不到这些文件

核心原因

这是Git跨平台大小写敏感性差异引发的问题:

  • Windows文件系统默认不区分大小写,执行git mv时,若目标目录src/Core/Analysis之前已以其他大小写形式存在(比如src/core/analysis),Windows会自动合并目录,但Git在Linux/MacOS这类区分大小写的系统中,会将不同大小写的目录视为完全独立的实体。
  • 迁移操作时,Git仅记录了文件从src/Analysis删除的操作,并未正确将文件添加到src/Core/Analysis——因为Git索引中已存在大小写不同的同名目录条目,导致新目录下的文件未被正确追踪。

解决步骤

  1. 切换到区分大小写的环境操作:使用WSL、Linux或MacOS环境打开仓库,确保文件系统严格区分大小写
  2. 清理Git索引中的冲突条目:
    • 切换到问题分支,执行命令:git rm -r --cached src/Core/Analysis(注意大小写需与当前仓库中显示的一致)
    • 若存在src/core/analysis这类大小写不同的目录,同样执行:git rm -r --cached src/core/analysis
  3. 重新添加正确的目录与文件:
    • 确认src/Core/Analysis目录结构和文件完整,执行命令:git add src/Core/Analysis/
  4. 提交并推送:创建新提交并推送到GitHub,此时Linux/MacOS CI和GitHub页面应能正确显示所有迁移后的文件

后续注意事项

  • 跨平台协作时,严格保持目录和文件名的大小写一致,避免在Windows上创建大小写不同的同名目录/文件
  • 若需在Windows上强化Git的大小写敏感性,可执行git config core.ignorecase false,但此操作可能引发本地文件系统冲突,需谨慎使用

内容的提问来源于stack exchange,提问作者John Källén

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 03:35:01