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

如何在主目录与子目录初始化git并解决嵌套仓库文件不显示问题

问题根源

client、server目录下各自存在独立的.git仓库目录,外层主仓库初始化后,会自动将这两个内部有Git仓库的文件夹识别为子模块,仅记录子模块的commit哈希,不会追踪内部的实际文件,因此推送后GitHub仅显示不可点击的文件夹入口。

普通修复方案(不需要保留子仓库原有提交历史)
  • 首先删除两个子目录下的Git仓库文件:
# macOS/Linux环境执行
rm -rf client/.git
rm -rf server/.git
# Windows cmd环境执行
rd /s /q client\.git
rd /s /q server\.git
  • 清除外层主仓库缓存中已标记的子模块条目:
git rm --cached client
git rm --cached server
  • 重新添加两个目录的所有文件到暂存区:
git add client/ server/
  • 提交修改后推送即可:
git commit -m "移除嵌套子模块,统一管理前后端代码"
git push
可选方案(保留子仓库原有提交历史)

如果需要保留client、server之前的所有Git提交记录,可以使用git subtree能力合并历史到主仓库:

  • 先将当前client、server目录备份到其他路径,再删除主仓库下的这两个目录
  • 执行命令合并client仓库历史:
git subtree add --prefix=client <client仓库本地路径/远程地址> main
  • 执行命令合并server仓库历史:
git subtree add --prefix=server <server仓库本地路径/远程地址> main
  • 合并完成后直接推送即可,主仓库会完整保留两个子项目的所有提交记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 22:36:04