【SourceTree】告别复杂操纵!用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
https://i-blog.csdnimg.cn/direct/ef89bbfe679c428394fd72fbfa6f0b05.png
https://i-blog.csdnimg.cn/direct/92b9f58d70f74d1e9d9566ab93788f54.png
https://i-blog.csdnimg.cn/direct/a8cc96cde5894a3589de7ce76a4090eb.png
https://i-blog.csdnimg.cn/direct/ca79ab1658914cebb3f3ac53c1f8474e.png
https://i-blog.csdnimg.cn/direct/6aaf8c4c28a345f790ad28fb3b694701.png
三、SourceTree使用
1、克隆堆栈&拉取代码&推送代码
因为前面讲git submodules命令创建过子模块项目,gitee堆栈地址,这边直接拿来用。
https://i-blog.csdnimg.cn/direct/e4e62c7276fc43308aac0bf182783435.png
目录如图,分为公共模块和子模块,子模块分为1和2;
找到主堆栈url
https://i-blog.csdnimg.cn/direct/0552eed85ac645b085bb1a029e2ed8f8.png
克隆
https://i-blog.csdnimg.cn/direct/0a38d5b87a6e43febe7d93557f266c33.png
https://i-blog.csdnimg.cn/direct/cba40b47772c471f92ee929b1c1ec581.png
任意写点内容,然后暂存到当地
https://i-blog.csdnimg.cn/direct/21ebc20090c5496888002dae81c165a8.png
然后写点提交信息,推送到长途堆栈
https://i-blog.csdnimg.cn/direct/b0daba9ef7be4bce997a8382b0421eae.png
对于不想要的文件,可以进行移除,大概抛弃本次修改的内容。
https://i-blog.csdnimg.cn/direct/e0593b0b0e974b52a78cacd02f07c01e.png
如果长途堆栈有代码更新,可点击拉取最新代码。
https://i-blog.csdnimg.cn/direct/fe242d3496114a30b32403a4c5f0d96f.png
2、创建分支&合并分支代码
实际开辟中,不可能直接在main大概master分支上开辟,而是从master分支new一个release/1120-learn-git-submodules分支进行开辟,开辟完合test分支,测试通过以后发merge哀求,merge到master/main分支
创建release/1120-learn-git-submodules分支
https://i-blog.csdnimg.cn/direct/90e52b8db5e2441796d4f07e58e7bda5.png
写点内容提交
https://i-blog.csdnimg.cn/direct/6355a4b691a84fc1a02ae5bdc465212c.png
合并release/1120-learn-git-submodules分支代码到test分支
https://i-blog.csdnimg.cn/direct/89604f1d6f474870bf0af7406405ddf8.png
合并完了记得推送到长途堆栈
https://i-blog.csdnimg.cn/direct/228ef5a87dc8407fa00b1105cdf0c361.png
https://i-blog.csdnimg.cn/direct/b618bd409b9749d0b3314b5528198593.png
如果遇到辩说(即2个人在同一文件同一位置修改了内容)
https://i-blog.csdnimg.cn/direct/9e7656403068480d9e3496dc422e28cb.png
打开此辩说文件进行合并修改再提交即可
测试通过,将release/1120-learn-git-submodules合到master/main分支,创建merge哀求
起首点分支:
https://i-blog.csdnimg.cn/direct/3a0295b47fbc47c6a6b0dfac1419284d.png
https://i-blog.csdnimg.cn/direct/1f1b8646a2414787ba100e1593b6f244.png
https://i-blog.csdnimg.cn/direct/c792ebc8bf324e11aa49a451e5cbe05b.png
https://i-blog.csdnimg.cn/direct/73e6a56e38064c83aa1b90777aaf3171.png
https://i-blog.csdnimg.cn/direct/dbfccaa5a76848318d2e75cd953fea7b.png
然后我们更新sourceTree上的main分支
https://i-blog.csdnimg.cn/direct/c52e817a7e3d4c6a9a65256695d5936a.png
能看到merge的哀求
https://i-blog.csdnimg.cn/direct/845be4ea27114e1ebb9ec7a0a96786af.png
3、标签
用于对项目重要里程碑节点标识记录 ex:线上发版1.0.0
https://i-blog.csdnimg.cn/direct/f977677cc37e44eabd0c3971bf4e61a3.png
https://i-blog.csdnimg.cn/direct/f4de873101f642018918acd3b7eb4178.png
4、子模块
我们如今来重点讲讲子模块操纵
起首新建一个git-learn-submodules3模块,并添加一个init提交
https://i-blog.csdnimg.cn/direct/8fec09db9fe4431bad4de2153c9e54ee.png
我这以前有两个子模块,如果项目中没有子模块,右击空缺区域出现添加子模块
https://i-blog.csdnimg.cn/direct/46dea57e29c74dbbaa06efa74e8d824d.png
https://i-blog.csdnimg.cn/direct/0949981734b54bda9ed6d7a83f8af9fb.png
https://i-blog.csdnimg.cn/direct/457109b683dd4ecea57f4ec31257e713.png
主项目中的.gitmodules文件会有子模块3的映射
https://i-blog.csdnimg.cn/direct/9e2d3d6150b545aa91a5f8a94e16d7df.png
https://i-blog.csdnimg.cn/direct/fd4804a5c0fe4ddc84eb1d931eebb365.png
4.1、创建开辟分支
如今我们模拟下面情况,需要你在子模块3下开辟代码,还需要你在公共模块开辟代码,我们先新建开辟分支,我们将公共模块和子模块3的main分支迁出一个开辟分支,1,2两个子模块保持在main分支不要动
https://i-blog.csdnimg.cn/direct/e22405d65dad497fb72ba33efd5ae700.png
创建release/1120-xxx分支,git-learn-submodules3同理
https://i-blog.csdnimg.cn/direct/2005ffe350444f8fbb992be68117a834.png
4.2、开辟分支操纵
创建一个文件,然后推动至远端的release/1120-xxx分支
https://i-blog.csdnimg.cn/direct/cc12981a8488468386df0558e1ec0c62.png
公共模块有两个改变有,一个是修改的代码,一个是hash变化
https://i-blog.csdnimg.cn/direct/88a8850d558d464985590c45718409dd.png
这个是开辟分支的模块3的hash
https://i-blog.csdnimg.cn/direct/cf4ac48aa66b419bb562dbe312c989eb.png
https://i-blog.csdnimg.cn/direct/21208fab02d14a02af39a72af01e1cc7.png
发现两个hash不一样,这就是hash辩说,我们把公共模块hash提交到远端
https://i-blog.csdnimg.cn/direct/3a7e4e0e7fcd47d4a9d0379fe773f754.png
如许就包管了hash的一致
4.3、开辟分支合test分支操纵
如果其他子模块有变动,担当他变更就行,只用管自己修改的地方
将子模块开辟分支合并到test环境,并推送到远端:
https://i-blog.csdnimg.cn/direct/cbbf0e10c0d842d2b70db112e43eeea9.png
https://i-blog.csdnimg.cn/direct/b0b51d4d165643f9a5467dc1e6dbcf67.png
将公共模块代码推动到test环境:
https://i-blog.csdnimg.cn/direct/6681bce114664deaa6af37f47abd52ca.png
https://i-blog.csdnimg.cn/direct/e92564adf6a2439ab9ebf6d81affdfa9.png
hash一致,推送乐成
4.4、开辟分支合main分支操纵
点击子模块3 git目录merge哀求
https://i-blog.csdnimg.cn/direct/2854f6b7e9f34a749fc89b549a9d75e3.png
https://i-blog.csdnimg.cn/direct/211acbcefdb74d31a200a4c832c49120.png
拉取到当地
https://i-blog.csdnimg.cn/direct/d245e32644334e5d9f55700d9f977f1d.png
能看到我们的merge操纵
https://i-blog.csdnimg.cn/direct/a8b9794ba5e146c6aaa9bfba2ece4f76.png
公共模块推送main分支时,先包管其他子模块的分支全部都在main分支下,且没有hash辩说,且开辟分支合过最新的main分支
如下图
https://i-blog.csdnimg.cn/direct/c616a002c6b2442281c60cba1db4e12d.png
包管开辟分支为最新分支
https://i-blog.csdnimg.cn/direct/2a94580c023c47d7a55377e48367c62c.png
https://i-blog.csdnimg.cn/direct/a05db0c725254addb37adc436504e3c9.png
包管hash一致
https://i-blog.csdnimg.cn/direct/d4e8f1e8993d499d9b362e5df2ec39fa.png
如许完备的子模块合代码流程完成!
创作不易,不妨点赞、收藏、关注支持一下,各位的支持就是我创作的最大动力❤️
https://i-blog.csdnimg.cn/blog_migrate/3f21cd60a69933e31473a31cf59a9517.gif#pic_center
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]