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

如何在Git项目中引入外部仓库模块,不合并代码且独立提交?

解决方案:使用Git子模块(Git Submodule)

你之前尝试的merge操作会将两个仓库的代码合并,这不符合需求。Git子模块是专门解决这类场景的工具——它允许你在主项目(PROJECT)中嵌入一个独立的Git仓库(MODULE),主仓库仅记录子模块的版本引用,不会包含子模块的代码历史,同时两个仓库可以独立提交、推送修改。

操作步骤

1. 清理之前的配置

先移除之前添加的MODULE远程仓库(子模块会自行管理自身的远程):

git remote remove MODULE

2. 添加子模块到主项目

将MODULE仓库作为子模块添加到主项目的指定目录(比如modules/my-module,可自行修改路径):

git submodule add [module URL in Github] modules/my-module

执行后,主项目中会生成两个关键文件:

  • .gitmodules:记录子模块的配置信息(远程地址、本地路径等)
  • modules/my-module:一个指向子模块当前版本的引用文件

3. 提交主项目的配置变更

把这两个文件提交到主项目仓库,完成子模块的接入:

git add .gitmodules modules/my-module
git commit -m "Add MODULE as submodule"
git push origin master

日常操作:在两个仓库间切换修改

操作MODULE仓库

进入子模块目录后,你可以像操作独立Git仓库一样进行修改、提交、推送:

# 进入子模块目录
cd modules/my-module

# 拉取MODULE仓库的最新代码
git pull origin master

# 提交修改到MODULE仓库
git add .
git commit -m "Fix module bug"
git push origin master

更新主项目中的子模块版本

当MODULE仓库的版本更新后,主项目需要记录这个新的版本引用:

# 回到主项目根目录
cd ../..

# 提交子模块的版本变更
git add modules/my-module
git commit -m "Update MODULE to latest version"
git push origin master

克隆包含子模块的项目

如果其他人克隆你的主项目,需要加上--recurse-submodules参数来同时拉取子模块代码:

git clone --recurse-submodules [PROJECT仓库URL]

如果已经克隆了主项目,也可以手动初始化并拉取子模块:

git submodule init
git submodule update

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 22:33:24