修复 GitHub 中的“Ghost Folder”:将损坏的子模块转换为普通文件夹

发布: (2025年12月27日 GMT+8 06:53)
3 min read
原文: Dev.to

Source: Dev.to

概览

如果你曾经把代码推送到 GitHub,看到一个带白色箭头且无法点击进入的文件夹图标,你并不孤单。这通常是因为该文件夹被当作 Git 子模块(通常是嵌套仓库的结果)处理。下面是一份逐步指南,教你将损坏的子模块转换为普通文件夹。

问题的本质

箭头图标表明 Git 认为该目录是子模块。这常在你在已有 Git 仓库中初始化新项目(例如使用 create‑react‑app 创建的 React 应用)时出现。新项目会带有自己的隐藏 .git 文件夹,导致父仓库把该目录当作独立的仓库。由于子模块在 GitHub 上没有正确链接,文件夹会显示为空且不可点击。

步骤 1:定位根项目

进入你的 monorepo 根目录。例如:

project-root/
├── backend_folder/   # Go 后端
│   └── main.go
├── my-app/           # Expo / React Native 应用

project-root/ 下运行以下命令,停止 Git 将 my-app/ 视为子模块进行跟踪:

git rm --cached my-app

此操作会从索引中移除子模块条目,但不会删除任何文件。

步骤 2:删除内部 Git 数据

删除子模块内部的隐藏 .git 目录(或文件),使其不再作为独立仓库存在:

Remove-Item -Recurse -Force my-app/.git

注意: 如果内部 Git 数据位于其他位置,请相应调整路径。

步骤 3:重新添加并推送

内部 Git 数据删除后,将文件夹重新添加到父仓库,提交并推送:

git add my-app/
git commit -m "Fixed: converted submodule to a normal directory"
git push origin

现在你的远程仓库会在单一的 Git 历史中存储所有文件和文件夹。

最终效果

新仓库


感谢阅读!希望此技巧能帮助你解决 GitHub 上的 “幽灵文件夹” 问题。欢迎分享你的想法。

Back to Blog

相关文章

阅读更多 »

版本控制入门:U盘类比

封面图片:Version Control for Beginners:Pendrive 类比 https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto