向GitHub推送文件被误识别为submodule的解决方法问询
Git推送时文件夹被识别为submodule的解决方法
出现该问题的核心原因有两个:一是目标文件夹内部本身存在.git隐藏目录(之前曾作为独立Git仓库初始化过),二是主仓库的.gitmodules文件或Git缓存中残留了该文件夹的submodule记录,按照以下步骤操作即可恢复为普通目录提交:
操作步骤
- 第一步:删除目标文件夹内的
.git隐藏目录
注意不要误删主仓库根目录的.git文件,否则会丢失主仓库的所有提交记录。Mac/Linux系统可直接执行命令删除:rm -rf 你的目标文件夹路径/.git
Windows系统需要先开启文件管理器的「显示隐藏项目」选项,再进入目标文件夹手动删除.git目录。 - 第二步:清除主仓库的submodule缓存
在主仓库根目录打开终端,执行以下命令清除已经被Git记录的submodule索引:git rm --cached 你的目标文件夹路径
注意路径末尾不要加斜杠,也不要加--recursive参数,避免误删本地的实际文件。 - 第三步:清理
.gitmodules配置(可选)
如果主仓库根目录存在.gitmodules文件,打开后找到和目标文件夹相关的配置段落,整段删除即可;如果没有该文件或者没有对应配置,可以直接跳过此步。 - 第四步:重新提交推送
依次执行以下命令重新添加目录并推送:git add 你的目标文件夹路径/ git commit -m "调整xx目录为普通目录提交" git push
操作完成后,目标文件夹的所有内容就会和普通文件一样正常上传,不会再被识别为submodule。
内容的提问来源于stack exchange,提问作者Chaz Carothers
相关产品推荐
相关产品推荐

