mac中使用Sourcetree的git flow
mac中使用Sourcetree的git flow
- 前言
- 1.git flow工作流
- 1.1 什么是git flow
- 1.2 git flow上的分支
- 1.2.1 长期分支
- 1.2.2 短期分支
- 1.3 图解git flow 工作流程
- 1.3.1 创建初始化仓库
- 1.3.2 开发创建功能分支
- 1.3.3 预发布分支
- 1.3.4 hotfix修复分支(线上版本出现bug)
- 2.使用git命令行实现git flow
- 2.1 git flow初始化项目
- 2.2 功能开发(feature分支)
- 2.3 预发布(release分支)
- 2.4 修复上线版本bug(hotfix分支)
- 3.mac中使用Sourcetree实现git flow
- 3.1 准备工作
- 3.2 创建初始仓库
- 3.3 使用git flow初始化——会自动创建并切换到develop分支
- 3.5 推送代码到远端
- 3.6 创建feature功能分支(基于develop)
- 3.7 完成feature功能分支开发,提交本地,并推送到远端
- 3.8 合并到develop分支(可选择是否删除feature/V1.0.00.00分支)
- 3.9 创建release预发布分支(基于develop)
- 3.10 修改预发布分支
- 3.10 完成预发布版本(merge到master分支和dev分支)
- 3.11 创建hotfix分支(基于master)
- 3.12 修复hotfix版本的bug
- 3.13 完成hotfix补丁版本
- 4.半路加入一个git flow流程项目,我们该做什么
- 4.1 克隆项目
- 4.2 初始化git flow
- 4.3 检出需要的分支
- 4.4 删除本地分支和远程分支
- 4.4.1 删除本地分支
- 4.4.2 删除远程分支(慎重!确认将当前分支合并到develop分支和主分支后再删除)
- 4.5 多人版本,多个分支的合并
- 4.5.1 模拟多个版本
前言
因为Sourcetree的mac版本和window版本界面和操作方式有所差异,一直在网上找不到合适的教程或者指导说明,就干脆自己写一个。
如果已经了解什么是git flow工作流及其代码操作方式的同学,可以直接跳到 3.mac中使用Sourcetree实现git flow 这一步进行学习。
1.git flow工作流
1.1 什么是git flow
2010年5月,在一篇名为“A successful Git branching model”的博文中,原Git Prime的首席技术官Vincent Driessen介绍了一种构建在Git(一个开源的分布式版本控制系统)之上的软件开发模型。通过利用Git创建和管理分支的能力,为每个分支设定具有特定的含义名称,并将软件生命周期中的各类活动归并到不同的分支上,实现了软件开发过程不同阶段的相互隔离。这种软件开发的活动模型被Vincent称为“Git Flow”(Git工作流程)。Git Flow已经开始流行于基于主干的工作流,它现在被认为是现代连续软件开发和DevOps(开发、技术运营和质量保障三者的交集)实践的最佳实践。
1.2 git flow上的分支
git flow的核心就是分支(branch),通过在项目的不同阶段,创建不同的分支并完成不同的操作来实现一个完整高效的工作流。git glow的分支又分为两大类:长期分支和短期分支,其中主分支包括master(主要分支)和develop(开发分支),辅助分支包括feature(功能分支)、release(预发布分支)、hotfix(补丁分支)和其他自定义分支。
1.2.1 长期分支
- master(主要分支)
- 版本库初始化以后自动建立的
- 代码库中有且仅有一个主分支,不可删除
- 不要直接修改master分支代码
- master分支对外发布,每一次推送应该打标签(tag)做记录,方便追溯
- develop(开发分支)
- 基于master分支创建
- 代码库中有且仅有一个开发分支,不可删除
- 不要直接修改master分支代码
1.2.2 短期分支
- feature (功能分支)
- 新功能或新特性开发分支
- 基于develop分支创建
- 新特性或新功能开发完成,合到develop分支
- 临时分支,功能完成后可删除
- release (预发布分支)
- 基于develop分支创建(feature分支合并到develop分支之后)
- 临时分支,产品上线后可选删除
- 发布到内部测试区,供测试人员测试
- hotfix (补丁分支)
- 基于master创建
- 对线上的版本打补丁或bug修复
- 修复完成后,合并到master分支和develop分支
- 临时分支,修复上线后可删除
1.3 图解git flow 工作流程
1.3.1 创建初始化仓库
(1)初始化仓库(需要已经存在master分支,目前git项目主分支时main分支,可以先创建master分支后删除main分支,或者直接使用main分支作为主分支)
(2)基于master分支创建develop分支
1.3.2 开发创建功能分支
(1)基于develop分支创建feature分支
(2)功能分支开发完成后,合并到develop分支
1.3.3 预发布分支
(1)基于develop创建release分支
(2)完成后merge到master分支,同时打个标签,之后在merge到develop分支
1.3.4 hotfix修复分支(线上版本出现bug)
(1)基于master创建hotfix分支
(2)修复bug后,merge到master分支,同时打个标签,再merge到develop分支
2.使用git命令行实现git flow
2.1 git flow初始化项目
(1)创建并切换到develop分支(基于master分支)
git checkout -b develop master
(2)创建并切换到feature分支(基于develop分支)
git checkout -b feature/Vx.x.xx.xx develop
feature/Vx.x.xx.xx中的x.x.xx.xx
第一个x代表着主版本
第二个x代表着次版本
第三个xx代表着补丁版本
按理说到这里就结束了,但是因为git项目经常是多人开发,因此为了避免频繁地更替补丁版本,因此又加了一级。
详情可参照npm的语意版本控制
2.2 功能开发(feature分支)
完成功能开发后,将功能合并到develop分支
# 切换到develop分支
git checkout develoop
# 合并功能分支
git merge feature/Vx.x.xx.xx
# 删除功能分支
git branch -d feature/Vx.x.xx.xx
当然你也可以选择不删feature-x分支,但是通常情况下,因为分支已经合并到develop分支,这就意味着feature/Vx.x.xx.xx分支的工作已经结束,并且创建新的预发布分支,测试其内容,并且进行修正。因此feature/Vx.x.xx.xx分支就没有了存在的意义,并且在版本迭代快速的今天,删除已经完成其使命的ffeature/Vx.x.xx.xx是一个明智之选。
2.3 预发布(release分支)
(1)创建release预发布分支
git checkout -b release/Vx.x.xx.xx develop
(2)完成后,合并到master分支
# 切换到master分支
git checkout master
# 合并release/Vx.x.xx.xx分支到master分支
git merge release/Vx.x.xx.xx
# 打个标签,用于后续的正式发布,其中xxxxxxxx表示日期,例如20221017,如果一天内多次发布,还可以在xxxxxxxx之前加上_xx,表示第几次发布,比如Vx.x.xx.xx_01.20221017表示20221017版本x.x.xx.xx的第二次发布(第一次为_00,通常可以省略)。
git tag -a Vx.x.xx.xx.xxxxxxxx
(3)将release分支合并到develop分支
git checkout develop
git merge release/Vx.x.xx.xx
(4)合并完成之后删除release分支
git branch -d release/Vx.x.xx.xx
2.4 修复上线版本bug(hotfix分支)
(1)创建hotfix分支
git checkout -b hotfix/Vx.x.xx.xx
(2)完成后合并到master分支
git checkout master
git merge hotfix/Vx.x.xx.xx
# 打标签,标签规则和之前类似,只是在_xx和xxxxxxxx添加了一个hotfix表示修复版本
git tag -a V.x.x.xx.xx.hotfix.xxxxxxxx
(3)合并到develop分支
git checkout develop
git merge hotfix/Vx.x.xx.xx
(4)删除hotfix分支
git branch -d hotfix/Vx.x.xx.xx
以上就基本完成了git flow开发的流程。
3.mac中使用Sourcetree实现git flow
3.1 准备工作
本地创建一个新项目,比如使用vue create 项目名称
按照流程创建一个Vue2默认项目(因为只是演示git flow的使用方式,项目就使用简单的设置)。在git上创建远程仓库后,建立连接。
如图,我创建了一个名为git-flow的项目,建立连接,使用it push -u origin "master"
命令推送代码,发现提示报错,本地并没有master分支,这是因为美国之前的人种冲突事件,给master分支(master也意味着主人)蒙上了一层阴影。因此之前git上创建的新项目默认的master分支也被改为了main分支。
但是,Sourcetree可能因为并不是用于创建项目,而是管理项目,因此考虑到以往的使用者项目,仍然沿用master分支作为git flow的主分支。
3.2 创建初始仓库
鉴于我们在本地已经有了初始仓库,就不使用“从url克隆的方式”拉取代码了。选择“扫描文件夹”,
选中项目外一层文件夹即可扫描到本地已有的git项目,勾选需要使用Sourcetree管理的项目,点击添加多个仓库即可。
可以看到Sourcetree的目录列表就有了我们的项目,并且在最右侧展示当前项目在本地的分支。
3.3 使用git flow初始化——会自动创建并切换到develop分支
(1)双击项目,进入管理界面
(2)尝试git flow初始化仓库
点击仓库 -> git-flow 或 hg flow -> 初始化仓库
可以看到,默认生产环境分支是master,如果直接点击确定,则无法继续下一步。现在我们有两种选择,要么将生产环境分支改为main,要么新建一个master分支。两种都可以,我选择按照提示选择后者。
(3)创建新分支master
点击分支,输入master作为新分支名称,创建分支。
可以看到,本地基于main分支就创建了一个master分支,并且main分支前面的小圆圈变到了master分支前面,这代表Sourcetree在创建分支后,自动切换到了该分支(如果希望切回main分支,双击该分支即可)。
(4)删除main分支
因为之前没有将main分支上传到远程,直接勾选强制删除,确定即可。
(5)正式构建git flow工作流
可以看到,本次构建git flow工作流成功,并且自动创建和切换了develop分支作为开发分支。
3.5 推送代码到远端
点击推送,选中需要推送的分支,点击确定。
可以看到Sourcetree上的远端-origin下出现了master和develop分支。切换到gitee上查看也有,说明推送成功。
3.6 创建feature功能分支(基于develop)
(1)创建一个功能分支。
选择 仓库 -> git flow 或 hg flow -> 下个操作,建立新的功能(或者直接选择 仓库 -> git flow 或 hg flow -> 建立新的功能),输入功能名称,点击确定,就新建了一个feature/V1.0.00.00分支。
因为feature分支随着功能的增加,版本会逐渐增多,Sourcetree使用文件夹的形式显示。
(2)推送feature分支到远端。
3.7 完成feature功能分支开发,提交本地,并推送到远端
(1)模拟完成feature功能分支开发
(2)提交本地代码,并推送到远端
点击仓库 -> 提交。
选中需要提交的文件,写入提交的注释,选择立即推送,点击提交。
可以看到,文件已经成功推送到了远端上。
3.8 合并到develop分支(可选择是否删除feature/V1.0.00.00分支)
点击完成当前项目
默认是删除分支(如果确认要删除,那就选择),我选择保留分支,点击确定。
合并完成后,可以看到develop分支超前了一个版本。
可以看到 feature/V1.0.00.00 分支确实合并(merge)到了 develop,但是develop并没有提交到远端。
3.9 创建release预发布分支(基于develop)
之前的feature分支合并到develop分支后,可以不着急将develop推送到远端。可以先创建一个release分支,用于测试,等待测试完成通过后,再进行合并推送。
(1)创建release分支
初学者通常选择下个操作来查看和使用git flow进行的步骤。当然,如果你已经和熟练该流程,就可以直接使用下个操作下面的 “建立新的发布版本” 等操作。
(2)点击推送,推送到远端
3.10 修改预发布分支
(1)修改
此时测试如果发现了问题,就需要对代码就行修改。
(2)提交并推送
修改完成后重新提交推送。
3.10 完成预发布版本(merge到master分支和dev分支)
从Sourcetree上可以看出,完成预发布版本,实际上做了下面几件事:
1、将该release分支merge(合并)到了master分支,随后将master分支推送到远端,并且打了个标签。
2、将该release分支删除。
3、将刚打的标签分支merge(合并)到了develop分支,并推送到了远端。
3.11 创建hotfix分支(基于master)
推送到远端
3.12 修复hotfix版本的bug
修复bug
3.13 完成hotfix补丁版本
从Sourcetree上可以看出,完成hotfix补丁版本,其实做的事情和完成release分支版本类似:
1、将该release分支merge(合并)到了master分支,随后将master分支推送到远端,并且打了个标签。
2、将该release分支删除。
3、将刚打的标签分支merge(合并)到了develop分支,并推送到了远端。
4.半路加入一个git flow流程项目,我们该做什么
4.1 克隆项目
因为我本地已经有一个项目了,所以我修改了个名称,命名为git-flow-copy进行克隆。
可以看到新克隆下的项目,远端的分支和标签版本都可以看到,但是本地默认只有master分支。
4.2 初始化git flow
git flow初始化后,本地创建并切换到了develop分支
4.3 检出需要的分支
如果需要其他分支,右键,检出即可。
4.4 删除本地分支和远程分支
4.4.1 删除本地分支
注意:当你在某一分支时,无法删除当前分支,必须要切换到其他分支之后才行。
建议切换到master主分支(通常主分支不会删除),右键需要删除的分支
注意到这里有强制删除和删除远程分支选项。后者我们理解,那强制删除和删除有什么区别吗?我们都尝试看看。
(1)不选择强制删除
重新检出,没有问题
(2)选择强制删除
没有任何区别,还是可以检出。所以强制不强制的区别是什么,目前还不太清楚,以后遇到,再退回来完善。
4.4.2 删除远程分支(慎重!确认将当前分支合并到develop分支和主分支后再删除)
方法一:在删除本地分支的时候,勾选删除远程分支。
方法二:直接右键远程中需要删除的分支,点击删除。
4.5 多人版本,多个分支的合并
4.5.1 模拟多个版本
(1)按照 3.6 的方式,创建一个新的feature/V1.0.00.01功能分支。
(2)模拟新功能开发
完成功能开发后,Sourcetree点击仓库 -> 提交
我们选择保留分支
(3)发布新的预发布版本
(4)推送预发布版本到远程
(5)完成预发布项目
(6)同理,创建一个feature/V1.0.01.00分支,但是我们需要做些改动。比如,增加一个组件,修改一些文字等。
执行提交推送。之后,按照git-flow的下个操作继续执行即可,记得完成feature分支后,推送develop分支。
但是创建新的release分支时,会有一个问题,如果保留之前的release分支,将无法创建新的release分支。本节内容关键是如何合并分支,先不在意这些细节。暂时不用release分支测试合并,使用feature分支做合并测试。
(7)基于 feature/V1.0.00.01分支 创建 feature/V1.0.00.02分支
(8)合并feature/V1.0.00.02分支到feature/V1.0.01.00分支
git checkout feature/V1.0.01.00
git merge feature/V1.0.00.02
发现冲突,
重新提交推送
mac中使用Sourcetree的git flow相关推荐
- mac中使用 sourcetree 的快速配置和git服务器登录
问题: 1.mac中下载sourcetree配置仓库地址,一直在提示输入密码,无法登录成功,更无法获取源码. 2.找不到配置仓库时的账号密码,只看到地址. 场景: git服务器:自己的GIT服务器,非 ...
- Mac中为SourceTree设置代理登陆
用git已经有一段时间了,但一直是使用命令来管理,有时候不是太方便,看到同事都在用SourceTree,也下载了一个想用用. 二话不说,上官网下载了一个最新版本的,当前版本是2.5(104).我用的是 ...
- 基于SourceTree 下的 Git Flow 模型
基于SourceTree 下的 Git Flow 模型 1. sourceTree 是一个开源的git 图形管理工具,可下载mac版本,windows版本 2. Git Flow 是一套使用Git进 ...
- Git 在团队中的最佳实践--如何正确使用Git Flow
我们已经从SVN 切换到Git很多年了,现在几乎所有的项目都在使用Github管理, 本篇文章讲一下为什么使用Git, 以及如何在团队中正确使用. Git的优点 Git的优点很多,但是这里只列出我认为 ...
- Mac中Git如何忽略.DS_Store文件
Mac中Git如何忽略.DS_Store文件 作者:坚果 公众号:"大前端之旅" OpenHarmony布道师,InfoQ签约作者,CSDN博客专家,华为云享专家,阿里云专家博主, ...
- linux trac git,trac装配、配置、中文化、支持git(Linux,Mac)
trac安装.配置.中文化.支持git(Linux,Mac) 我是用pip进行python包安装的! 整个过程还挺折腾,都怪文档有限,所以写下我的流程,给大家一个参考. 先确定版本 python 2. ...
- MAC 中Git 的使用
MAC Pro中默认安装了GIT,我们可以在Mac的终端中直接使用GIT命令连接上GIT 服务器进行GIT的获取和提交工作,下文主要介绍几个常用的命令,以便收藏使用. 打开终端,导航到需要克隆的文件目 ...
- Git的使用——Git 常用命令总结、Git的使用、Git 的分支、远程仓库的使用、IDEA 中使用Git、Git 工作流(Git Flow、Github Flow、GitLab Flow)
Git的使用--Git 常用命令总结.Git的使用.Git 的分支.远程仓库的使用.IDEA 中使用Git 一.Git 常用命令总结 为了方便后续查找命令,故先把总结放前面,教程放后面 1.git 基 ...
- Visual Studio中使用Git Flow
在VS下使用 GitFlow管理项目开发 1.右键将你的解决方案添加到源代码管理,如果你的VS没有安装git,会提示安装,安装完成之后,在团队资源管理可以看到如下界面 (图一) 2.安装gitflow ...
最新文章
- js php base64,JavaScript实现Base64编码与解码的代码详解
- 你不知道的windows7 技巧大全【3】
- 深入浅出 Linux 惊群:现象、原因和解决方案
- js 动态创建注释节点 createComment
- 数论 —— 素性测试
- 基于DCT系数的实时监控中运动目标检测
- abb机器人指令手册_「ABB」ABB机器人指令模块介绍与开发过程
- mysql binlog解析 c_解析MYSQL BINLOG二进制格式(9)--infobin解析binlog帮助文档
- bfc是什么_清除浮动和 BFC
- OC----预处理器
- Intellij idea 插件 | 超越鼓励师 吐槽
- 计算机的神奇功能华为,接上线就变PC!华为Mate 10的电脑模式究竟好用不?
- 网络摄像机进行互联网视频直播录像方案的选择,EasyNVS or EasyCloud or EasyGBS?
- 现汇买入价/现钞买入价/卖出价/基准价/中行折算价的概念
- macbook蓝牙pan未连接_关于 MacBook 的电池问题,你了解多少
- 解决电脑桌面程序图标变白问题
- u盘安装计算机系统,最新U盘装系统教程,像安装软件一样简单,3分钟学会!
- 5G千兆工业路由器 poe供电
- 怎样度过研究生生活,如何度过研究生生活
- 人工智能-一种现代的方法-chapter3-通过搜索进行问题求解