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

如何在不知道Git仓库URL的前提下将其添加到另一个仓库

你操作时收到的提示含义是当前仓库检测到子目录中存在独立的Git仓库,默认不会将该子目录的内容纳入当前仓库的版本管理:

warning: adding embedded git repository: [my repository]
hint: You've added another git repository inside your current repository.
hint: Clones of the outer repository will not contain the contents of
hint: the embedded repository and will not know how to obtain it.
hint: If you meant to add a submodule, use:
hint: 
hint:   git submodule add <url> [my repository]
问题解答

1. 使用原克隆URL添加子模块是否会丢失本地修改

会。submodule机制是绑定对应远程仓库的特定提交记录,你本地未推送到原上游仓库的修改仅存在于本地副本中,使用原URL添加子模块时,只会拉取原上游仓库的公开提交,你的本地修改不会被包含在内。

2. 如何将带修改的本地副本作为子模块加入新仓库

如果你需要保留每个子仓库的独立提交历史,方便后续版本管理或同步更新,可按以下步骤操作:

  • 为每个修改后的本地Git仓库单独创建对应的私有远程仓库(可在你使用的Git托管平台操作)
  • 进入每个本地子仓库目录,将所有本地修改提交后,推送到你刚创建的对应私有远程仓库
  • 回到主仓库目录,执行 git submodule add <你自己的私有仓库URL> [子仓库文件夹路径] 即可,此时子模块会关联你包含修改的私有仓库,不会丢失本地改动

3. 删除子文件夹下的.git文件作为普通文件夹添加是否可行

该方案完全可行,适合不需要保留子仓库独立提交历史、后续不需要跟进原上游仓库更新的场景。

  • 操作注意事项:
    • 删除子文件夹内的.git目录后,需要先执行 git rm --cached [子仓库文件夹名] 清除主仓库中已缓存的嵌入式仓库记录,避免残留报错
    • 之后再正常执行 git add [子仓库文件夹名]、git commit 即可将所有修改后的文件作为主仓库的一部分提交
  • 优缺点说明:
    • 优点:操作简单,克隆主仓库时会直接拉取所有文件,不需要额外处理子模块拉取逻辑
    • 缺点:原每个子仓库的提交历史会被清除,后续无法直接和原上游仓库同步更新

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:27:01