git 子模块以及 在 Jenkins中如何使用

git version 2.11.0 (Apple Git-81)

Jenkins ver. 2.46.3

工作中会遇到这种情况,多个项目引用了同一套代码 A,这套代码A修改后还需要在多个项目中同步,如果项目是 git 管理,那就需要在每个项目中嵌入一个子模块,这个子模块就是 A


git 子模块允许你将一个 Git 仓库作为另一个 Git 仓库的子目录。 它能让你将另一个仓库克隆到自己的项目中,同时还保持提交的独立。


1:添加子模块
如果我们要嵌入一个子模块,就必须调用 submodule add 命令,并制定该模块的 仓库路径和模块所在的目录名

> git submodule add git@github.com:langzuxiaozi/ExtractSms.git sub

这样一来,模块版本库就会被完整地克隆到制定的目录中(并且它也会创建属于它自己的.git目录),主版本库中的.gitmodules文件也将被同步创建或更新
然后还需要将新的子模块注册到.git/config文件中.

>git submodule init
目前子模块指向的是默认分支的 HEAD, 如果需要选择子模块的版本, 那就需要用 checkout 命令来选择一下相应的版本

>cd sub
>git checkout v1.0
>cd ..
然后将.gitmodules 文件和子目录添加到提交中

>git add .gitmodules
>git add sub
>git commit -m "Submodule added"
>git push

2:克隆带有子模块的项目

要克隆一个带有子模块的项目需要在执行 git clone 命令之后 需要初始化子模块和更新子模块,要不子模块的目录内容是空的

>git submodule init
>git submodule update
现在子模块目录就有内容了.当然也可以执行递归命令

>git clone --recursive git@github.com:langzuxiaozi/ExtractSms.git

3:子模块仓库有更新,要用最新的子模块代码

在许多开发项目中,我们通常都希望主项目所集成的始终是子模块的当前最新版本.
git 的子模块不支持这种想法,子模块引用的只是模块版本库中的某一次提交,模块版本库中随后的新提交并不会自动记录到主版本库中.所以需要我们显示的修改
更新子模块

>cd sub
>git fetch
>git checkout v1.0
>cd ..
最后将新提交更新到模块目录中.
>git add sub
>git commit -m "New version of the submodule"
>git push


4:修改子模块文件内容后,提交更新

如果在工程中修改了子模块的文件,那就进入到主版本库中的子模块目录提交并推送

>cd sub
>git add jni_common.h
>git commit -m "Changed submodule"
>git push
>cd ..
这个时候去子模块的仓库看,就能看的这次的修改了,但是还没完,主板本的仓库还没更新呢,
先看一下当前主版本中子模块被引用的散列值
>git submodule status
+447ff22adb9ed9a72e4be7cdfa7ebe4f5ba2af0a sub (heads/master)
这个散列值是和子模块中仓库中最新提交的散列值是一致的.下面更新主版本的仓库

>git add sub
>git commit -m "New version of submodule"
>git push


5:修改子模块的 url

打开目录下的.gitmodules文件,修改对应模块的 url,然后执行命令

>git submodule sync
>git commit -am "Update submodule url."
>git push

6:删除子模块

首先逆初始化子模块目录,执行后目录内容为空

>git submodule deinit sub
然后删除.gitmodules中的sub模块信息 然后提交
>git rm --cached sub
>git git commit -am "Remove a submodule."
>git push

7:Jenkins配置 git 子模块
首先 git 的证书 是在 Jinkens 上配的才可以

Additional Behaviours -> Add -> Advanced sub-modules behaviours 选中
Recursively update submodules 和 Use credentials from default remote of parent repository
完成.




















  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Git submoduleGit 的一个功能,可以将一个 Git 仓库作为另一个 Git 仓库的目录进行管理。通过使用模块,我们可以在一个 Git 仓库使用另一个 Git 仓库的组件。 使用 git submodule 的步骤如下: 1. 在父项目添加模块使用命令 `git submodule add <模块仓库地址> <模块存放路径>` 将模块添加到父项目。 2. 克隆模块使用命令 `git submodule init` 初始化模块,然后使用命令 `git submodule update` 克隆模块的内容。 3. 切换到模块分支:通过 `cd <模块路径>` 进入模块目录,然后使用 `git checkout <分支名>` 切换到模块所在的特定分支。 4. 更新模块:在父项目使用命令 `git submodule update --remote` 可以更新模块为最新的提交。 5. 提交模块修改:在父项目修改了模块后,需要切换到模块目录,进行提交和推送操作。 使用模块的好处是可以将项目作为独立的仓库进行开发和维护,同时在父项目方便地使用和更新模块使用模块可以实现项目的模块化和复用,提高代码的可维护性和可重用性。 需要注意的是,使用模块时需要注意模块的分支和版本控制,因为模块可能会更新,需要及时更新父项目模块。同时,在多人协作开发,也需要注意在提交父项目时确保模块的修改也已经提交。 总之,使用 Git submodule 可以方便地在父项目使用模块的组件,提高代码管理的灵活性和可重用性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值