git submodule使用
创始人
2024-01-20 08:32:18
0

在工程中加入依赖,有很多的依赖管理工具可用,比如前端工程的npm,安卓的gradle,iOS的cocoaPods等,有时我们不方便使用以上工具的时候,还可以使用git的submodule依赖三方库或者自己写的库。本文介绍git submodule的基本使用方法。

添加submodule依赖

假设我们有两个仓库名称为cpp-test和submodule-test,现在在cpp-test中依赖submodule-test,submodule-test作为子仓库使用。

添加submodule依赖可以使用命令

git submodule add 

这里submodule-test的仓库地址替换为远端的仓库地址,替换完成后,cpp-test仓库里面会新增文件.gitmodules和文件夹submodule-test。.gitmodules文件记录了依赖的仓库地址,submodule-test文件夹保存依赖的仓库代码,此时submodule-test目录还是空的。

.gitmodules文件内容

[submodule "submodule-test"]path = submodule-testurl = xxx.git

为了使代码真正依赖进来,需要初始化submodule,使用命令

git submodule update --init --recursive

这样操作会拉取submodule-test仓库相应的代码,依赖submodule至此已经完成。

查看submodule依赖

当前的仓库有哪些submodule依赖,可以使用命令查看

git submodule status --recursive

–recursive表示递归,如果有submodule嵌套的情况,这里也会打印出来,打印的结果展示当前依赖的commit,仓库名和分支信息。

修改submodule代码

修改submodule代码稍微麻烦些,submodule-test是以子仓库的形式依赖进来的。需要切换到submodule-test这个目录下,执行命令

git add .
git commit -m "commit message"
git push origin xxx

这一步代表submodule的修改已经推动到子模块的远端仓库,这时git status查看主仓库cpp-test的工作区,多了modified: submodule-test (untracked content) 这条信息,代表子模块已经被修改了。需要在主仓库中执行git add . 和git commit -m "commit message"以及git push操作,把当前的改动推到主仓库中。此时修改submodule的操作已经完成。

在多人合作的项目中,有可能是其他人修改了子模块并且推送到远端。这个时候自己的本地项目代码不是最新的,需要使用update 命令更新主仓库和子仓库的代码。

git submodule update --remote

删除submodule

删除submodule可以执行deinit命令

git submodule deinit submodule-test
git rm submodule-test
rm -rf .git/modules/submodule-test

git submodule deinit submodule-test这行命令修改了主仓库中.gitmodules文件,去掉了对submodule-test的依赖。git rm submodule-test这样命令删除了submodule-test目录。

需要注意的是.git目录还有个modules目录,它也保存了依赖信息,需要使用rm -rf .git/modules/submodule-test将其删除。

上述命令执行完成以后,可以使用查看submodule的命令检查下是否已经删除。

 git submodule status

此时输出的信息为空。

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...