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

Git仓库如何清理大小写重命名旧文件夹并保留提交历史?

解决Git大小写重命名后远程残留旧文件夹的问题

这个坑我踩过好几次!本质是Git默认的大小写不敏感配置(core.ignorecase默认true),加上远程仓库的文件系统可能保留了旧的大小写文件夹条目,导致本地看起来正常,但远程(比如GitLab)还挂着冗余的旧文件夹。按下面的步骤一步步来,既能清理冗余,又不会丢提交历史:

1. 开启本地Git的大小写敏感识别

首先得让本地Git能区分文件名的大小写,不然它根本认不出Foo和foo是两个不同的路径。在仓库根目录执行:

git config core.ignorecase false

这个配置只会作用于当前仓库,不会影响全局,放心用。

2. 从Git索引中移除旧的大小写文件夹

接下来要把远程残留的旧文件夹(比如Foo)从Git的索引里彻底删掉,但不会删除本地的实际文件(靠--cached参数实现):

git rm -r --cached Foo/

这里把Foo/换成你实际的旧文件夹名,记得加斜杠表示是文件夹。

3. 提交变更并推送到远程

执行完上面的命令后,用git status检查一下,应该会看到deleted: Foo/xxx这类记录。然后提交这个变更:

git commit -m "清理大小写重命名残留的旧文件夹Foo"

最后推送到远程分支:

git push origin 你的分支名

4. 验证远程仓库

这时候去GitLab上刷新对应分支,应该就能看到旧的Foo文件夹已经消失,只剩下新的foo了。

额外提醒

  • 如果操作前担心数据安全,可以先把仓库备份一份,或者创建一个临时分支测试操作。
  • 如果你是Windows用户,本地文件系统默认也是大小写不敏感的,可能需要先确保本地的文件夹确实已经改成小写(有时候Windows会偷偷保留旧的大小写记录,这时候可以先把文件夹移到仓库外,再移回来改名)。

内容的提问来源于stack exchange,提问作者Heatmanofurioso

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:52:14