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

如何将含子目录的文件夹一次性添加到Git并解决嵌入仓库报错

问题原因确认

是的,该警告的触发原因就是所有子目录内部都存在独立的Git仓库(即子目录下有隐藏的.git文件夹),Git识别到嵌套仓库后,默认不会将子目录的实际文件纳入父仓库的追踪范围,只会将其标记为未声明的子模块引用,因此抛出对应提示。

解决方案

根据你是否需要保留子目录的Git提交历史,可选择对应处理方案:

方案1:无需保留子目录Git历史,将所有内容合并到父仓库提交(大多数场景适用)

  • 首先撤销已经添加到暂存区的错误记录,在父文件夹下执行:
    git rm --cached -r .
  • 接下来删除所有子目录下的.git隐藏文件夹,避免嵌套仓库识别,注意不要误删父目录下刚初始化的.git文件夹:
    • Windows系统在父文件夹CMD中执行:
      for /d /r . %d in (.git) do @if exist "%d" rd /s /q "%d"
    • Mac/Linux系统在父文件夹终端执行:
      find . -mindepth 2 -name ".git" -type d -exec rm -rf {} +
  • 重新执行文件添加操作:
    git add .
  • 后续正常提交推送即可:
git commit -m "初始化仓库,提交所有目录内容"
git remote add origin 你的GitHub仓库地址
git push -u origin main

注:如果你的主分支名称为master,将最后一条命令的main替换为master即可

方案2:需要保留子目录各自的Git提交历史,后续单独维护子仓库

使用Git原生的子模块功能管理嵌套仓库即可:

  • 为每个子目录执行子模块添加命令,替换为对应子目录自己的远程仓库地址:
    git submodule add <子目录对应的GitHub仓库地址> Child_folder_1
  • 所有子模块添加完成后,父目录会生成.gitmodules配置文件,执行提交推送即可:
git add .gitmodules ./*
git commit -m "添加所有子模块配置"
git push -u origin main

注:后续其他人克隆该父仓库时,需要执行git clone --recursive 父仓库地址才能同时拉取所有子目录的内容


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:36:09