git submodule使用

本文介绍了如何使用GitSubmodule来管理项目依赖,包括添加子模块、初始化、查看子模块状态、修改子模块代码并提交,以及更新和删除子模块的详细步骤。通过GitSubmodule,开发者可以在不同仓库间有效地组织和共享代码。
摘要由CSDN通过智能技术生成

https://blog.csdn.net/u011608357/article/details/127742023

在工程中加入依赖,有很多的依赖管理工具可用,比如前端工程的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的仓库地址>

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

.gitmodules文件内容

[submodule "submodule-test"]
    path = submodule-test
    url = 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

此时输出的信息为空。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值