git submodule基本用法

简介

某个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,可以查看到子模块的修改

发布了1 篇原创文章 · 获赞 0 · 访问量 9
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 深蓝海洋 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览