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

如何将projectB迁移至新Git仓库并添加剩余projectA为子模块

迁移projectB到独立仓库并引入projectA作为子模块的方案

步骤1:提取projectB的完整提交历史(不碰原仓库)

  • 先克隆原projectA的本地副本,避免直接修改原仓库:
git clone <原projectA的Git地址> projectA-temp
cd projectA-temp
  • 用git filter-repo提取仅和projectB相关的提交历史,同时把projectB下的内容移到仓库根目录:
git filter-repo --subdirectory-filter projectB

执行后,当前仓库的提交历史就只剩projectB的相关记录,所有文件都在根目录。

步骤2:推送projectB到新的GitHub仓库

  • 创建好新的GitHub仓库projectB后,把处理后的本地仓库推上去:
git remote add new-origin <新projectB的GitHub地址>
git push -u new-origin main  # 分支名是master的话就改成master

步骤3:在新projectB仓库中添加projectA作为子模块

  • 克隆新的projectB仓库到本地(或者直接在刚才的projectA-temp目录继续操作):
cd ..
git clone <新projectB的GitHub地址> projectB-new
cd projectB-new
  • 创建lib目录,把原projectA作为子模块加到lib/projectA:
mkdir -p lib
git submodule add <原projectA的Git地址> lib/projectA
  • 提交并推送这个更改:
git add .gitmodules lib/projectA
git commit -m "Add projectA as submodule in lib"
git push

可选:清理原projectA中的projectB目录

  • 如果不需要在原projectA里保留projectB,可以回到原仓库删除它:
cd ../projectA  # 切换到原projectA仓库目录
git rm -r projectB
git commit -m "移除projectB目录(已迁移至独立仓库)"
git push

验证结果

  • 原projectA仓库完全不受影响,所有迁移操作都在本地副本完成
  • 新projectB仓库保留了原projectB的完整提交历史,目录结构符合预期,且通过子模块依赖projectA

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 22:42:52