当前位置:   article > 正文

git submodule的使用_git submodule拉代码

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 中删除对应的配置

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/407382
推荐阅读
相关标签
  

闽ICP备14008679号