0.引入
相信很多人和我一样在学习Git的基础操作之后,对接下来该做什么觉得无从下手。
比如说该如何管理自己的项目?到底做了什么要打一个新的commit,怎样的情况要创建一个新的分支,什么时候要合并分支?
这就是我们今天要讨论的话题“Git工作流”(Git Workfow),同时我们还将介绍其中一个最常用的工作流以及它的命令工具使用。
1.Git工作流
1.1 什么是Git工作流
Git工作流就是团队开发中使用Git进行项目管理的一套共识或者说规范。
他统一了团队对分支的理解,譬如该有几个分支,每个分支叫什么,在哪个分支上做开发,什么时候要进行合并,交给谁来合并这些问题。
接下来介绍几种常见的Git工作流。
1.2 Github Flow
每个项目的参与者都先从共有远端仓库fork一个个人远端仓库,接着再克隆到本地。
在本地完成开发之后,先Push到个人远端仓库,再向共有远端仓库发送pull request。
code review完成后,便会将修改内容merge到共有远端仓库。
1.3 GitFlow
GitFlow是相对复杂的一个工作流程,它涵盖了项目的开发,测试,发布,漏洞修复等多个环节。
我们先从最重要的2个分支开始看,然后介绍其他的分支功能。
- master分支:这是呈现给客户的稳定版本,所以他们都会打上版本号的标签
- develop分支:这是所有开发的基础分支,当要添加新功能的时候,就会在该分支上再新增feature分支,开发完成后再合并回develop分支
- release分支:当develop分支成熟后,也就是开发进度差不多了以后,就会把develop分支合并到release分支,进行上线前的最后测试。测试完成后就会将release分支合并到master分支还有develop分支上。(之所以合并到develop分支,是因为在release分支测试的时候可能会发现一些问题,所以需要develop分支同步修复)
- hotfix分支:这是在对master分支出现的bug进行紧急修复的分支,同样的在修复完成后也要合并回develop分支,原因和release分支是相同的,为了避免不同步造成后续版本依旧存在这个bug。
2.GitFlow命令工具
2.1 初始化仓库
git flow init
- 接着回答几个问题,给定各个分支名,就完成了项目初始化过程
- 这边推荐加上
-d选项,直接使用默认的名称就好
2.2 进行开发
首先我们要创建一个新的功能分支,用于新功能的开发。
git flow feature start FeatureName
- 在这个分支上进行开发,阶段性的打上commit
在这个功能完成之后,我们就可以将该feature分支合并到develop分支。
git flow feature finish
- 这条命令会帮我们自动完成分支的合并还有删除
2.3 进行发布
在develop分支开发完成后,就能够对其进行发布。
首先在develop分支的基础上,创建一个release分支。
git flow release start ReleaseName
接着就能在该分支上进行测试。
测试完成后就能够进行发布。
git flow release finish
- 接着会弹出编辑器,让我们添加上版本号标签
2.4 Bug修复
相信看了前面内容,大家也找到规律了。
如果要开始一项任务就使用git flow branch start,如果完成了就使用git flow branch finish。
bug修复的话用到的是hotfix分支,所以我们开始和完成的命令应该是:
git flow hotfix start
git flow hotfix finish
这个推断是对的,但是不同的是hotfix必须带上版本号,表示我们修复完成时的版本号,和发布的以作区分。
所以bug修复的命令应该是:
git flow hotfix start 1.0
git flow hotfix finish 1.0
- 这里的1.0可以换成自己指定的版本号
3.总结
到这里就基本介绍完什么是工作流,常见工作流,还有使用GitFlow进行项目管理的基本操作了。
关于拉取和推送到远端仓库的操作,这个我们下次再写篇文章来讲。