创建子仓

# 1. 到本地仓库目录

# 2. 添加远程仓库地址(origin 是远程仓库的别名)
git remote add origin git@github.com:<子仓地址>.git

# 3. 查看远程仓库配置
git remote -v

# 4. 先拉取远程文件 变基
git pull origin main --allow-unrelated-histories --rebase

# 5. 解决可能的冲突后,再推送
git push -u origin main

父仓添加子仓

# 到父仓目录

git submodule add git@github.com:<子仓地址>.git packages/feature-package

git commit -m "add feature package as submodule"

git push

只添加的提交指针,也就是父仓能看到子仓的提交历史,但可以不持有子仓代码

父仓子目录 设置子仓

背景:我的父仓.gitignore忽略了tmp/文件夹及其内容,但我想把这个tmp/设置为子仓单独维护

步骤1-4非必需

# 1. 备份 tmp/ 内容(安全起见)
cp -r tmp/ tmp_backup/

# 2. 从父仓库忽略中移除(但不删除文件)
git rm -r --cached tmp/

# 3. 提交父仓库变更
git commit -m "chore: stop tracking tmp/"

# 4. 将备份的内容复制回 tmp/(如果需要)
rm -rf tmp
mv tmp_backup tmp

建议直接这里开始:

# 5. 将 tmp/ 初始化为独立仓库
cd tmp
git init
git add .
git commit -m "Initial commit"

# 6. 创建远程仓库并推送
git remote add origin <你的远程仓库URL>
git push -u origin main

# 7. 回到父仓库,添加为子模块
cd ..
git submodule add <你的远程仓库URL> tmp

这步如果报错

tina@tina-Inspiron-5580:~/tina/ArmPiUltra-main/tmp$ cd ..
tina@tina-Inspiron-5580:~/tina/ArmPiUltra-main$ git submodule add git@github.com:xx/xxxx.git tmp
下列路径根据您的一个 .gitignore 文件而被忽略:
tmp
提示:如果您确实要添加它们,使用 -f 参数。
提示:运行下面的命令来关闭本消息

加个-f,强制执行而忽略ignore规则

git submodule add -f <你的远程仓库URL> tmp

# 8. 提交
git add .gitmodules tmp
git commit -m "feat: add tmp as submodule"

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐