git submodule的使用

Git 工具的 submodule 功能就是建立了当前项目与子模块之间的依赖关系:子模块路径、子模块的远程仓库、子模块的版本号。

添加submodule

git submodule add <submodule_url> 目录名称 用于在项目中添加一个子模块,在此过程中,会自动将相关代码克隆到对应路径,但对于后续使用者而言,对于主项目使用普通的 clone 操作并不会拉取到子模块中的实际代码。

更新submodule

如果希望子模块代码也获取到,有如下两种方式:

  • 在克隆主项目的时候带上参数 --recurse-submodules,这样会递归地将项目中所有子模块的代码拉取。
    git clone <main_url> --recurse-submodules

  • 在主项目中执行如下命令,则会根据主项目的配置信息,拉取更新子模块中的代码。

    git submodule init [子模块]
    git submodule update [子模块]

    如果没有指定子模块,则是指全部的子模块

子模块内容的更新

上述步骤在创建子模块的过程中,会自动将相关代码克隆到对应路径,但对于后续使用者而言,对于主项目使用普通的 clone 操作并不会拉取到子模块中的实际代码。submodule对应的文件夹是空的

  • 子模块有未跟踪的内容变动: 需要进入子模块文件夹,按照子模块内部的版本控制体系提交代码。
  • 子模块有版本变化:当子模块版本变化时,在主项目中使用 git status 查看仓库状态时,会显示子模块有新的提交;在这种情况下,可以使用 git add/commit 将其添加到主项目的代码提交中,实际的改动就是那个子模块 文件 所表示的版本信息
  • 子模块远程有更新: 通常来讲,主项目与子模块的开发不会恰好是同时进行的。通常是子模块负责维护自己的版本升级后,推送到远程仓库,并告知主项目可以更新对子模块的版本依赖。需要让主项目主动进入子模块拉取新版代码,进行升级操作。

删除子模块

根据官方文档的说明,应该使用 git submodule deinit 命令卸载一个子模块,自动在 .git/config 中删除了相关配置。这个命令如果添加上参数 --force,则子模块工作区内即使有本地的修改,也会被移除。
git rm <submodule>自动在 .gitmodules 中删除对应的配置

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值