git父子模块
git父子模块
nodaoliGit 子模块是什么?
Git 子模块允许您将一个 Git 仓库(子模块)嵌入到另一个 Git 仓库(父仓库)中。这样,您可以在保持独立版本控制的同时,方便地在多个项目中共享代码。
如何添加子模块?
- 打开终端。
- 导航到父仓库的根目录:
1
cd /path/to/parent-repository
- 使用
git submodule add
命令添加子模块:例如:1
git submodule add <子模块仓库URL> <本地路径>
这会在父仓库的1
git submodule add https://github.com/username/child-repo.git child-repo
child-repo
目录下添加子模块。
父仓库中的子模块变更
- 当您添加子模块时,Git 会记录子模块的当前提交哈希。
- 当您在子模块中做出更改时,需要先在子模块目录中提交这些更改:
1
2
3
4cd child-repo
git add .
git commit -m "子模块的更改"
git push - 然后,回到父仓库,提交子模块的变更:
1
2
3
4cd ..
git add child-repo
git commit -m "更新子模块"
git push
注意事项,更新后需提交主项目变更。
当我们更新子项目后,相当于是把主项目记录的 submodule 的 commit id 给更新了,需要提交下主项目的变更。
克隆含有子模块的父仓库
一、
当克隆包含子模块的父仓库时,子模块目录默认是空的。您需要初始化并更新子模块:
- 克隆父仓库:
1
git clone <父仓库URL>
- 初始化子模块:
1
git submodule init
- 更新子模块:这会拉取子模块的提交并将其检出到父仓库中指定的提交。
1
git submodule update
二、一键拉取
合并2、3步骤
1 | git submodule update --init |
update
和 --init
不可调换位置
更新子模块
要更新子模块,您可以:
1、一键命令
git submodule update --remote
命令用于更新子模块到其远端仓库的最新状态。这个命令会检查子模块的远端仓库,并将子模块更新到其默认分支的最新提交。默认情况下,这个命令会更新所有子模块,但你也可以指定特定的子模块进行更新。
如果子模块远程仓库是fork的,那会更新到fork的源仓库
请注意,git submodule update –remote 命令会忽略子模块的本地更改。如果你在子模块中有未提交的更改,这个命令会报错。在这种情况下,你需要先处理子模块的本地更改,然后再执行 git submodule update –remote 命令。
git submodule foreach "git pull origin main"
命令用于让所有的子模块都执行git pull origin main
命令,foreach
用户循环子模块
2、逐一步骤
- 进入子模块目录:
1
cd child-repo
- 拉取最新更改:
1
git pull
- 返回父仓库:
1
cd ..
- 提交子模块的更新:
1
2
3git add child-repo
git commit -m "更新子模块"
git push
删除子模块
如果不再需要子模块,您可以:
- 删除子模块目录:
1
2git rm --cached child-repo
rm -rf child-repo - 编辑
.gitmodules
文件,删除与子模块相关的条目。 - 编辑
.git/config
文件,删除与子模块相关的部分。 - 提交更改:
1
2git commit -m "删除子模块"
git push
注意事项
- 子模块的使用可能会增加仓库的复杂度。
- 确保子模块的 URL 是可访问的,以便其他人能够克隆父仓库并获取子模块。
- 子模块的更新和维护需要额外的步骤,因为它们是独立于父仓库的。
希望这份笔记能够帮助您更好地理解和使用 Git 子模块。如果您有任何疑问,请随时提问。
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果