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的模型里,软件开发基于不同的分支:
- 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