git submodule基本用法

本文介绍了Git子模块的基本用法,包括添加子模块、设置子模块分支、同步子模块、更新子模块、检出含子模块的项目以及删除子模块的详细步骤,旨在帮助开发者更好地管理和维护包含子模块的Git项目。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

某个git项目需要使用第三方库git项目,你想要把它们当做两个独立的项目,同时又想在一个项目中使用另一个。Git 通过子模块来解决这个问题,子模块允许你将一个 Git 仓库作为另一个 Git 仓库的子目录。 它能让你将另一个仓库克隆到自己的项目中,同时还保持提交的独立。

添加子模块

格式:git submodule add [subrepo] [path]
举例:git submodule add https://github.com/google/uuid.git ./library/uuid

subrepo: 要引用的第三方库git路径
path: 第三方库代码放在本地的路径,也是添加后模块名称

添加完成后,项目下新增了一个“./library/uuid”文件夹,并且会出现一个“.gitmodules”的文件,里面记录了子模块相关信息,如下

[submodule "library/uuid"]
	path = library/uuid
	url = https://github.com/google/uuid.git

设置子模块分支

格式:git config -f .gitmodules submodule.[mod_name].branch [branch_name]
举例:git config -f .gitmodules submodule.library/uuid.branch v1.1.1

mod_name: 模块名称,“添加子模块”时指定的名称
branch_name: 第三方git库的分支名称

设置完成后,“.gitmodules”文件信息如下

[submodule "library/uuid"]
	path = library/uuid
	url = https://github.com/google/uuid.git
	branch = v1.1.1

注意: “./library/uuid”中文件并没有同步到v1.1.1分支,请查看接下来的内容

向下同步子模块

命令:git submodule update --remote

当指定子模块代码修改后或重新指定了子模块分支后,使用该命令来同步子模块代码

向上更新子模块

$ cd [submodule_folder] # 进入子模块目录
$ git checkout branch_name # 切换到需要的分支
$ 修改子模代码
$ git commit -m ‘update submodule’
$ git push origin branch_name # 更新子模块

先进入子模块,然后切换到需要的分支,然后对子模块pull

检出含子模块的项目

step1:git clone [subrepo url]
step2:git submodule init
step3:git submodule update

若git检出的项目中引用了其他git项目,则使用以上命令来检出子模块代码,也可以使用以下命令一步到位

git clone --recursive [subrepo url]

删除子模块

删除子模块较复杂,步骤如下:

step1:删除子模块文件夹
$ git rm --cached library/uuid
$ rm -rf ./library/uuid
step2:删除.gitmodules文件中相关子模块信息
[submodule “library/uuid”]
path = library/uuid
url = https://github.com/google/uuid.git
step3:删除.git/config中的相关子模块信息
[submodule “library/uuid”]
url = https://github.com/google/uuid.git
step4:删除.git文件夹中的相关子模块文件
$ rm -rf .git/modules/library/uuid

注意事项

1.修改子模块的配置后,一定记住要使用git commit推送代码保存配置
2.运行 git diff -p --submodule,可以查看到子模块的修改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值