【SourceTree】告别复杂操作!用SourceTree秒懂Git子模块管理
soucetree操作git子模块
用SourceTree秒懂Git子模块管理
因为公司项目用git submodules托管,子模块的提交涉及hash值得变化,hash提交不当导致代码覆盖及Jenkins部署问题,真天下人苦git子模块久矣,现开一篇文章详细讲讲使用SourceTree来去管理git得子模块。
一、前言
本篇文章需要有一定的git submodules基础认知,包括子模块创建,子模块映射文件.gitmodules等,具体可以看《【Git】Git Submodules 介绍(通俗易懂,总结了工作完全够用的 submodule 命令)》这篇文章
接下来先看看sourceTree的安装
二、SourceTree安装
下载地址:
- 官网:https://www.sourcetreeapp.com/
- gitee安装包:gitee





三、SourceTree使用
1、克隆仓库&拉取代码&推送代码
因为前面讲git submodules命令创建过子模块项目,gitee仓库地址,这边直接拿来用。

目录如图,分为公共模块和子模块,子模块分为1和2;
找到主仓库url

克隆


随便写点内容,然后暂存到本地

然后写点提交信息,推送到远程仓库

对于不想要的文件,可以进行移除,或者丢弃本次修改的内容。
如果远程仓库有代码更新,可点击拉取最新代码。

2、创建分支&合并分支代码
实际开发中,不可能直接在main或者master分支上开发,而是从master分支new一个release/1120-learn-git-submodules分支进行开发,开发完合test分支,测试通过以后发merge请求,merge到master/main分支
创建release/1120-learn-git-submodules分支

写点内容提交

合并release/1120-learn-git-submodules分支代码到test分支

合并完了记得推送到远程仓库


如果遇到冲突(即2个人在同一文件同一位置修改了内容)

打开此冲突文件进行合并修改再提交即可
测试通过,将release/1120-learn-git-submodules合到master/main分支,创建merge请求
首先点分支:





然后我们更新sourceTree上的main分支

能看到merge的请求
3、标签
用于对项目重要里程碑节点标识记录 ex:线上发版1.0.0


4、子模块
我们现在来重点讲讲子模块操作
首先新建一个git-learn-submodules3模块,并添加一个init提交

我这以前有两个子模块,如果项目中没有子模块,右击空白区域出现添加子模块



主项目中的.gitmodules文件会有子模块3的映射

4.1、创建开发分支
现在我们模拟下面情况,需要你在子模块3下开发代码,还需要你在公共模块开发代码,我们先新建开发分支,我们将公共模块和子模块3的main分支迁出一个开发分支,1,2两个子模块保持在main分支不要动

创建release/1120-xxx分支,git-learn-submodules3同理
4.2、开发分支操作
创建一个文件,然后推动至远端的release/1120-xxx分支

公共模块有两个改变有,一个是修改的代码,一个是hash变化

这个是开发分支的模块3的hash


发现两个hash不一样,这就是hash冲突,我们把公共模块hash提交到远端

这样就保证了hash的一致
4.3、开发分支合test分支操作
如果其他子模块有变动,接受他变更就行,只用管自己修改的地方
将子模块开发分支合并到test环境,并推送到远端:


将公共模块代码推动到test环境:


hash一致,推送成功
4.4、开发分支合main分支操作
点击子模块3 git目录merge请求


拉取到本地

能看到我们的merge操作

公共模块推送main分支时,先保证其他子模块的分支全部都在main分支下,且没有hash冲突,且开发分支合过最新的main分支
如下图

保证开发分支为最新分支


保证hash一致

这样完整的子模块合代码流程完成!
创作不易,不妨点赞、收藏、关注支持一下,各位的支持就是我创作的最大动力❤️

更多推荐



所有评论(0)