git 父仓添加子仓
创建子仓
# 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"
更多推荐

所有评论(0)