gitflow工作流程

gitflow工作流程

目前代码管理使用git和svn两种工具

1. git和svn优缺点

git的优点/缺点

  • 分布式;每个开发人员从中心版本库/服务器上chect out代码后会在自己的机器上克隆一个自己的版本库;如果没有网络,你仍然能够提交文件,查看历史版本记录,创建项目分支
  • 内容按照元数据存储;相比文件存储体积会小很多
  • 分支处理不同;git分支合并等更加简单;
  • 内容完整性更好;git使用sha-1哈希算法,能确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
  • git缺少全局版本号

svn优缺点

  • svn有全局版本号;不依赖于分支;
  • svn是集中模式;需要时时联网进行提交等操作,如果中心服务器出现问题,那整个项目都无法进行;
  • 分支处理繁琐复杂
  • 速度慢
  • 采用文件存储;体积比git大很多

2. gitflow是什么

在多人协作的开发模式中,如果没有代码提交规范,会导致整个git仓库混乱,不易于团队协作;
Vincent Driessen 提出了Git Branching Model,最后形成了业内普遍采用的git 工作流程,大家都在约定的流程内使用git,使得团队协作效率大大提高‌。

3. gitflow工作原理

如下图:
gitflow
在Gitflow的模型里,软件开发基于不同的分支:

  • master 该分支上的代码随时可以部署到生产环境,改分支不能直接推送代码,需要其他分支合并到该分支中
  • Hotfix branches 修复线上问题,在修复完成后merge回master和develop
  • develop 这个分支是我们的主开发分支,包含所有要发布到下一个Release的代码,这个主要合并与其他分支,比如Feature分支‌
  • Release branches 当你需要发布一个新功能的时候,要基于Develop分支创建一个Release分支,在Release分支测试并修复bug,完成release后,把release合并到master和develop分支‌
  • Feature branches feature分支主要是用来开发一个新的功能,一旦开发完成,我们合并回Develop分支进入下一个Release‌

4. git-flow工具

工具安装

# unix()
curl -L -O https://raw.github.com/nvie/gitflow/develop/contrib/gitflow-installer.sh

# Mac OS X
brew install git-flow

# Linux
apt-get install git-flow

# Windows
wget -q -O - --no-check-certificate https://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | bash

使用


5.git提交规范

<type>[(<scope>)]: <emoji> <subject> // header 部分
[BLANK LINE] //空行
[body] // 长描述
[BLANK LINE] 
[breaking changes] // 
[BLANK LINE]
[footer]

可以用辅助工具提交代码

npm install -g git-cz