背景:

有种情况我们经常会遇到:某个工作中的项目需要包含并使用另一个项目。 也许是第三方库,或者你独立开发的,用于多个父项目的库。 现在问题来了:你想要把它们当做两个独立的项目,同时又想在一个项目中使用另一个。这时候就用到了git的子模块git submodule命令。

常用的git submodule命令:

添加

为当前工程添加submodule,命令如下:

git submodule add 仓库地址 路径

仓库地址是指子模块仓库地址,路径指将子模块放置在当前工程下的路径

例子:git submodule add git的ssh链接地址 src/app/routes/wallet

删除

submodule的删除稍微麻烦点:首先,要在“.gitmodules”文件中删除相应配置信息。然后,执行“git rm –cached ”命令将子模块所在的文件从git中删除。

删除文件目录 git rm -r --cached src/app/routes/wallet

下载的工程带有submodule

当使用git clone下来的工程中带有submodule或者.gitmodules文件时,初始的时候,submodule的内容并不会自动下载下来的,此时三种方式实现:

方式1:
git submodule init 用来初始化本地配置文件,
而 git submodule update 则从该项目中抓取所有数据并检出父项目中列出的合适的提交。

方式2:
给 git clone 命令传递 --recurse-submodules 选项,它就会自动初始化并更新仓库中的每一个子模块,
 包括可能存在的嵌套子模块。
$ git clone --recurse-submodules https://github.com/chaconinc/MainProject

 如果你已经克隆了项目但忘记了 --recurse-submodules,那么可以运行 git submodule update --initgit submodule initgit submodule update 合并成一步。如果还要初始化、抓取并检出任何嵌套的子模块, 请使用简明的 git submodule update --init --recursive

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐