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

如何创建包含其他Git仓库引用的仓库?Git子模块是否适用于创建myExperiments仓库并关联已有GitHub项目的场景?

解决方案:创建包含独立Git仓库引用的仓库

Hey there! 你的需求刚好是Git子模块的典型适用场景——完全符合你要的「引用独立仓库、彼此无交互」的要求。下面我一步步给你讲怎么操作,以及为什么子模块是理想方案:

一、Git子模块是不是你的理想方案?

绝对是!原因如下:

  • 子模块允许你在主仓库(myExperiments)中嵌入多个独立的Git仓库,每个子模块都保留自己完整的提交历史、分支和配置
  • 被引用的仓库之间完全独立,不会有任何自动交互,除非你主动修改它们的依赖关系
  • 主仓库仅记录每个子模块当前指向的提交哈希,不会把子模块的代码合并到主仓库中,保持仓库结构干净简洁
  • 对于你的「仅引用实验项目」的需求,子模块的维护成本极低,完全能满足需求

二、创建myExperiments仓库并添加子模块的步骤

1. 初始化本地myExperiments仓库

先在本地创建文件夹并初始化Git:

mkdir myExperiments
cd myExperiments
git init

如果需要关联GitHub远程仓库,先在GitHub上创建一个空的myExperiments仓库,然后执行:

git remote add origin <你的myExperiments仓库GitHub地址>

2. 添加子模块到仓库

对于每个你要引用的实验项目,使用git submodule add命令,格式为:

git submodule add <实验项目的GitHub仓库URL> <本地存放的目录名>

举个例子:如果你的实验项目仓库是https://github.com/your-username/experiment-image-processing.git,想把它放在myExperiments里的image-exp文件夹,就执行:

git submodule add https://github.com/your-username/experiment-image-processing.git image-exp

重复这个命令,把所有需要引用的实验项目都添加进来。

执行后,Git会自动生成两个关键文件:

  • .gitmodules:记录所有子模块的配置(远程URL、本地路径等)
  • 每个子模块的路径条目:记录该子模块当前对应的提交哈希

3. 提交并推送配置

把这些子模块配置文件提交到myExperiments仓库:

git add .gitmodules image-exp/(替换成你的子模块目录)
git commit -m "Add submodules for all experiment projects"
git push origin main

4. 其他人克隆仓库的注意事项

当其他人克隆你的myExperiments仓库时,默认只会拿到子模块的配置文件,不会自动拉取子模块的代码内容。需要执行以下命令来初始化并拉取子模块:

git clone <你的myExperiments仓库GitHub地址>
cd myExperiments
git submodule init
git submodule update

或者更简洁的一步到位命令:

git clone --recurse-submodules <你的myExperiments仓库GitHub地址>

三、子模块日常维护小提示

如果后续某个实验项目有更新,你想在myExperiments中同步到最新版本,可以进入对应子模块目录拉取代码,然后回到主仓库提交新的提交哈希:

cd image-exp
git pull origin main
cd ..
git add image-exp
git commit -m "Update image-exp submodule to latest version"
git push origin main

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 16:42:28