执行git clone后git status显示所有文件已删除问题求助
问题原因
- 参数生效时机异常:旧版本Git执行
git clone时传入的--config core.filemode=false参数优先级低于全局默认配置,或生效时机晚于文件拉取步骤,拉取文件阶段依旧使用core.filemode=true配置。如果远程仓库提交的文件权限记录和本地文件系统实际分配的权限不一致,会导致Git索引和本地文件匹配失败:索引记录的文件被判定为已删除,本地实际存在的文件因为和索引记录不匹配被标记为未追踪。 - 子模块拉取异常:
--recursive参数会同步拉取仓库关联的所有子模块,如果任意子模块拉取失败、或子模块路径配置和父仓库记录不一致,会触发父仓库索引校验失败,父仓库索引绑定的子模块路径对应文件会被标记为已删除,实际拉取到本地的子模块文件夹会被识别为未追踪。 - 文件系统大小写不兼容:如果是在Windows、macOS这类默认大小写不敏感的文件系统上,克隆存在仅大小写不同的同名文件/文件夹的仓库时,本地文件系统会自动合并同名路径,导致索引记录的多个文件在本地仅存在一个,其余匹配失败的文件显示为已删除,合并生成的新文件夹被标记为未追踪。
修复步骤
- 进入已克隆的项目文件夹,执行索引重置命令匹配本地文件:
git reset --hard HEAD
注意:该命令会丢弃所有本地未提交的变更,刚克隆的无本地变更的仓库可直接执行。
- 如果重置后问题复现,删除当前克隆的项目文件夹,调整配置设置顺序重新克隆:
# 第一步先执行递归克隆 git clone --recursive [code_location] [project] # 第二步进入项目文件夹后再设置权限忽略 cd [project] git config core.filemode false
- 如果是大小写不兼容导致的问题,执行命令开启Git大小写敏感校验后再重置索引:
git config core.ignorecase false git reset --hard HEAD
内容的提问来源于stack exchange,提问作者newbieDevloper
相关产品推荐
相关产品推荐

