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

如何将Git子模块B从仓库A中分离并保留原远程仓库?

更优的子模块分离方案(无需手动指定远程仓库)

你当前的命令存在冗余操作——子模块B本身就是一个完整的Git仓库,自带原远程仓库的配置,完全不需要重新执行git init和手动添加远程。更高效的步骤如下:

  1. 在仓库A的根目录,先强制解除A对B的子模块跟踪:

    git submodule deinit -f B
    

    (加-f参数是为了跳过确认,直接解除关联)

  2. 将B从A的子模块配置文件(.gitmodules)和Git索引中移除,确保A不再把B当作子模块:

    git rm --cached B
    
  3. 进入B目录后,直接验证原远程仓库是否还存在:

    cd B
    git remote -v
    

    你会发现原有的远程仓库配置完全保留,不需要任何额外操作。

为什么你的原有命令没必要?

  • git submodule deinit B只是让A不再跟踪B,但B本身的Git仓库结构和远程配置完全没被改动。
  • 重新执行git init会重置B的仓库初始化状态,属于多余操作,甚至可能意外覆盖原有配置。
  • 手动指定<REMOTE_FOR_B>完全没必要,因为子模块B在被添加到A时,已经继承了自身的远程仓库配置。

内容的提问来源于stack exchange,提问作者Petr Křemen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 20:05:24