git 之 submodule
发布日期:2021-05-10 05:24:34 浏览次数:29 分类:精选文章

本文共 1684 字,大约阅读时间需要 5 分钟。

Git 子模块使用说明

作为一个开发人员,你可能需要处理项目中的多个子模块。以下是一些实用的技巧,帮助你更好地管理Git子模块。

1. 创建子模块

前提条件

你已经有一个主项目,但还没有子模块。

添加子模块

推荐使用以下命令添加子模块:

git submodule add https://github.com/xxx/project-sub.git project-sub

请确保使用HTTPS链接,而不是git://开头的链接。

验证添加结果

在执行上述命令后,运行git status可以看到新增的文件:

  • .gitmodules:存储子模块信息。
  • project-sub:子模块目录。

提交代码

在添加子模块后,建议先提交代码:

git commit -m "添加了子模块project-sub"

2. 查看子模块

查看子模块的信息:

git submodule e33f854d3f51f5ebd771a68da05ad0371a3c0570 project-sub

3. 克隆带有子模块的项目

如果主项目需要从仓库中克隆,运行以下命令:

git clone https://github.com/xxx/project-main.git

克隆完成后,进入项目目录,执行以下命令初始化和更新子模块:

git submodule init
git submodule update --init

或者,推荐使用:

git clone --recurse-submodules https://github.com/xxx/project-main.git

4. 更新子模块

子模块有改动但未提交

在开发环境中修改代码后,进入子模块目录,运行:

git add .
git commit -m "提交子模块更新"
git push origin master

如果忘记推送子模块,可以校验:

git push --recurse-submodules=check

子模块远程有更新

方式一:进入子模块目录,同步远程仓库:

cd project-sub
git fetch origin master
git merge origin/master

或者使用:

git pull --rebase

方式二:在主项目中更新,默认使用master分支:

git submodule update --remote
git config -f .gitmodules submodule.project-sub.branch master

子模块 URL 变更

如果子模块托管平台发生了变化:

git submodule sync --recursive
git submodule update --init --recursive

同时更新多个子模块

如果需要对多个子模块执行相同操作,可以使用:

git submodule foreach 'git pull origin master'

5. 删除子模块

方式一:自动删除

git submodule deinit project-sub
git submodule deinit project-sub --force

方式二:手动删除

删除子模块文件夹:

git rm --cached project-sub
rm -rf project-sub

删除.gitmodules文件中的子模块信息:

[submodule "project-sub"]
path = assets
url = https://github.com/xxx/project-sub.git

删除.git/config中的子模块信息:

[submodule "project-sub"]
url = https://github.com/xxx/project-sub.git

删除Git模块文件:

rm -rf .git/modules/project-sub

6. 参考资料

上一篇:ART-PI 嵌入式人形检测 附源码(RT-AK Demo)
下一篇:python 高性能编程pdf 无加密

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2025年05月07日 11时11分09秒