git 子模块以及 在 Jenkins中如何使用
2017-08-15 14:30
148 查看
git version 2.11.0 (Apple Git-81)
Jenkins ver. 2.46.3
工作中会遇到这种情况,多个项目引用了同一套代码 A,这套代码A修改后还需要在多个项目中同步,如果项目是 git 管理,那就需要在每个项目中嵌入一个子模块,这个子模块就是 A
git 子模块允许你将一个 Git 仓库作为另一个 Git 仓库的子目录。 它能让你将另一个仓库克隆到自己的项目中,同时还保持提交的独立。
1:添加子模块
如果我们要嵌入一个子模块,就必须调用 submodule add 命令,并制定该模块的 仓库路径和模块所在的目录名
这样一来,模块版本库就会被完整地克隆到制定的目录中(并且它也会创建属于它自己的.git目录),主版本库中的.gitmodules文件也将被同步创建或更新
然后还需要将新的子模块注册到.git/config文件中.
2:克隆带有子模块的项目
要克隆一个带有子模块的项目需要在执行 git clone 命令之后 需要初始化子模块和更新子模块,要不子模块的目录内容是空的
3:子模块仓库有更新,要用最新的子模块代码
在许多开发项目中,我们通常都希望主项目所集成的始终是子模块的当前最新版本.
git 的子模块不支持这种想法,子模块引用的只是模块版本库中的某一次提交,模块版本库中随后的新提交并不会自动记录到主版本库中.所以需要我们显示的修改
更新子模块
4:修改子模块文件内容后,提交更新
如果在工程中修改了子模块的文件,那就进入到主版本库中的子模块目录提交并推送
先看一下当前主版本中子模块被引用的散列值
5:修改子模块的 url
打开目录下的.gitmodules文件,修改对应模块的 url,然后执行命令
6:删除子模块
首先逆初始化子模块目录,执行后目录内容为空
7:Jenkins配置 git 子模块
首先 git 的证书 是在 Jinkens 上配的才可以
Additional Behaviours -> Add -> Advanced sub-modules behaviours 选中
Recursively update submodules 和 Use credentials from default remote of parent repository
完成.
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
完成.
相关文章推荐
- ubuntu 安装git以及如何使用(部分内容转载)
- 如何发布一个自定义Node.js模块到NPM(详细步骤,附Git使用方法)
- 如何查看gpio 使用状态,以及被那些模块request
- centos6.5源码安装和centos7.2使用yum安装httpd后,如何添加模块;以及怎么设置Cache-Control:max-age=?浏览器缓存时间
- 打造前端MAC工作站(七)GIT的使用以及GITHUB上如何创建项目等
- 关于如何在Android源码目录中建立自己的C工程,并用mm命令单独进行该C工程模块的编译,以及Android.mk的使用介绍(2)
- 如何使用Github DeskTop客户端以及简单的git指令托管代码到github
- 【iOS开发-94】xcode6怎么使用GIT以及如何给老得项目增加GIT功能?
- GitHub上如何使用git工具以及git的使用命令
- Git安装及使用以及如何配置本地的Git服务器
- 如何使用git以及常用的指令
- git 如何忽略文件以及使用.gitignore 不生效的解决办法
- 关于如何在Android源码目录中建立自己的C工程,并用mm命令单独进行该C工程模块的编译,以及Android.mk的使用介绍(1)
- GIT 2.0.4服务器搭建以及如何使用
- 如何使用git将remote master上的内容merge 到自己的开发分支上 & 以及将自己分支的内容merge到remote master上
- 初次使用git配置以及git如何使用ssh密钥(将ssh密钥添加到github)
- 详解Git的使用以及如何使用AndroidStudio上传工程到GitHub
- centos6.5源码安装和centos7.2使用yum安装httpd后,如何添加模块;以及怎么设置Cache-Control:max-age=?浏览器缓存时间
- 如何查看gpio 使用状态,以及被那些模块request
- 使用php Memcache模块如何正确遍历所有KEY以及VALUE