GIT工做流

前言: 关于git的使用, 以前就已经写过一篇博客了: http://www.cnblogs.com/0zcl/p/6874588.html. 看完这篇博客, 你就基本可使用git了. 这种使用, 仅限了一两人的开发. 若是团队有多人, 并且位置较分散. 那这开发就更须要规范了. 所以, 这篇博客来讲一下GIT工做流.html

 

原本觉得我用git命令行能够解决GIT工做流上的问题,但其实只用命令行仍是蛮困难的。下面先看看GIT的规范, 这部分比较无聊, 下面会图文并茂的, 好吧. 若是你瞄了一眼, 以为这SB博客, 写得太low了, 而后就关掉这篇博客, 我感受仍是错过一些东东.git

1、提交规则

[feature] 新增功能、更新的提交,例如“[feature] add a new data layer for reading jpeg images”性能

[bugfix] bug修正的提交,有bugid的补充bugid,例如“[bugfix] now data layer reads single-channel images correctly”测试

[optimize] 优化的提交:性能等方面,feature分之下的单次优化要指明,优化分支下的用[feature]便可优化

[refactor] 代码等重构的提交,feature分之下的单次重构要指明,重构分支下的用[feature]便可spa

  • 每次提交应该只能有一个修改,不能将多个逻辑修改放在一个提交中;不可将一个逻辑修改分红多个提交
    • 例如: 同时修复一个bug,同时作了重构或优化,就要把提交分红两个(bugfix、refactor/optimize)。
  • 每次merged到develop分支的代码必须为可运行的,而且保证多平台可用
  • 多人协做过程当中若是在开发同一个feature,不能够在同一个feature分支进行开发,须要各自拉出新feature分支独立开发,完成后merge到共同的feature分支
  • 每日至少一次Git提交,防止代码丢失
  • feature分支在完成后合并到develop

 

2、版本号的定义

A.B.C。例如1.1.0。按照功能来定:命令行

  • 若是是大的版本更新,则A+1,而且B和C都设置为0;
  • 若是是小的版本更新,则B+1,而且A不变,C设置为0;
  • 若是是修复bug的版本更新,则C+1,而且A和B都不变。

 

3、Git工做流

添加一个工程文件之后,点击:(仓库)——(git flow)——(初始化仓库)3d

  • 这个的目的是为了方便git各类分支的自动生成,同时也是为了后续工做流的方便使用。

develophtm

当前版本最新开发进展,未测试或者测试中,对于单人开发小模块能够直接提交,多人协做及大模块必须经过合并具体功能子分支,接受来自feature,release,hotfix的合并。blog

  • 建立分支必须经过(git flow)——(创建新的功能)从develop来进行

feature分支

这个分支主要是为了各类研发方案执行使用。(必须推送远端,完成feature后合并到develop,以及测试下是否能够执行)

  • 分支命名以版本号+开发者+模块的形式来,例如:feature/1.0.0_aidy_newfeature。
  • 当分支特性开发完成后合并到develop,主要是经过(git flow)——(完成功能)来进行合并,或者手动合并。
  • 当出现合并冲突时,记得与冲突者当面一块儿沟通与合并,并确认效果ok。

release分支

这个分支主要是给研发方案差很少肯定时使用,主要是为了fixbug等。(完成feature后,必须推送远端,以及测试下是否能够执行)

  • 这个分支只来自develop,当研发差很少了之后,就开始作release分支。
  • 命名为版本号,例如1.0.0。主要是经过(git flow)——(创建新的发布版本)来进行。
  • 当realease分支差很少了,就经过(git flow)——(完成发布版本)来进行。并会打一个版本号的标签。
  • 完成后并入develop和master。

hotfix分支

主要用于最新发布版本的bug修复。

当前版本

  • 就经过(git flow)——(创建新的修复补丁)来进行。
  • 当完成之后,经过(git flow)——(完成新的修复补丁)来进行合并。
  • 当出现合并冲突时,记得与冲突的修改者当面一块儿沟通与合并,并确认效果ok

 

以上来自GIT规范,然而看完GIT规范感受仍是没有顿悟的感受。so,必须得会使用smartgit呀。

 

4、使用SmartGit

看完GIT规范,你已经知道,feature分支是平时开发功能用的,完成feature分支开发后,合并到develop分支,合并成功后,删除该feature分支。这用smartgit能够轻松实现,用命令行的话是比较麻烦,但也能够实现呀。如今的问题是,用smartgit如何轻松实现建立feature分支,删除feature分支?

点击Git-Flow,再点击configure,可出现以下图:若是你找不到下图这个界面,那必然是你操做的姿式有问题。

看到没有,神奇呀,在上图中,你只需点击OK,GIT就会自动帮你建立feature, release, hot-fix, develop分支。这超牛逼的。这步操做很重要。完成这步操做后,会出现develop分支,此时须要把develop分支推到远程。

正常状况下,你远程仓库应该有两个分支了,分别是master和develop分支。若是没有,把它们推到远程

啥,不知道怎么push?有两种方式,在上图的左下角的Branches窗口下,你能够点击master分支,而后鼠标右击,再点击push to ;也能够在左下角的Branches窗口下,双击要push的分支A,此时分切换到A分支,而后再点击上图左上方的Push推到远程。

 

5、feature分支的使用

OK,此时远程仓库应该有两个分支master/develop,然而这还远远不够呀,你看到同事的项目有一个feature分支。so,你确定也是须要feature分支的。

点击Git-Flow,会出现下图。若是没出现Start Feature; Start Release这些,必然是你最开始的configure有问题。

点击Start Feature来建立一个feature分支,分支命令要参考命名规范。

如今你已经有一个feature分支了。在该分支提交些东西,commit后,提交到远程。你会惊喜的发现远程的仓库出现feature分支

 

如今你能够不断地开发,提交代码到feature分支上,但feature分支只负责一个功能的开发而已,当这个功能开发完成后,必然须要把该feature分支删除

简单粗暴地说,就是当feature/0.0.2_zzy_example分支负责的功能开发完毕时,须要把feature分支合并到develop分支,合并完成后,feature分支删除,此时远程仓库就看不到feature/0.0.2_zzy_example分支。

其实smartgit已经帮咱们简化了工做。牛逼呀。

当你建立feature分支时,会自动切换到feature分支。完成功能开发后,想把feature分支合并到develop分支,如何作呢?

只需点击Git-Flow,就会出现下图。注意,此时你应该是处于feature分支的:

看到上图的Delete feature branch没,当你合并完成后,就会把feature分支删除。

接下来你须要把develop分支推到远程。你会发现远程的feature分支不见了

以上,是feature分支开发的流程。

 

6、发布版本

今天,团长想考下git方面的操做。给我一个需求:

先来看看GIT规范对于release分支是如何介绍的:

release分支

这个分支主要是给研发方案差很少肯定时使用,主要是为了fixbug等。(完成feature后,必须推送远端,以及测试下是否能够执行)

  • 这个分支只来自develop,当研发差很少了之后,就开始作release分支。
  • 命名为版本号,例如1.0.0。主要是经过(git flow)——(创建新的发布版本)来进行。
  • 当realease分支差很少了,就经过(git flow)——(完成发布版本)来进行。并会打一个版本号的标签。
  • 完成后并入develop和master。

第一步

先建立一个release分支:点击Git-Flow,再点击start release:

输入release分支名,分支名参考GIT规范。

 

第二步:能够在release分支commit, push到远程。此时你的远程除master, develop外,应该得有一个release分支

 

第三步:发布版本

点击finish,就会发布版本啦,这里须要给版本打一个tag,tag默认会自动显示为你的版本号。同时会把release合并到master与develop分支。再同时发布以后,会删除该release分支。

 

此时远程以下显示:没有release分支。多了一个Tags版本:

至此,团长交待的任务完成!

 

 

7、附本人测试用了GIT分支图:

 

 

8、总结:

  1. 因为最开始就没用好smartgit,好比下面这张图的操做。以前就没用到,致使后面的操做不顺。
  2. 不要用命令行,不要用命令行,不要用命令行。命令行操做add, commit, push还能够,但对于分支操做,版本发布,用smartgit,用smartgit,用smartgit。
  3. 我想git这块我顿悟了。佛系佛系,喝怀奶荼冷静一下。

相关文章
相关标签/搜索