背景
这几年一直在用git, 但是一直感觉一直没用好, 原因还是多人协助的大型项目比较少。最近在做前后端分离的项目, 多人协作,并且接入公司发布系统,这个时候统一的git工作流就显得非常重要了。 问题如下
- 在什么分支进行开发?
- 用什么分支部署到测试环境?
- 用什么分支部署到线上环境?
- 改bug时候怎么处理?
- pull request怎么用?
带着这些问题, 对使用最广泛的git flow进行了学习, 规范大家的工作流。
git flow
分支
- master 主分支,永远保证稳定的发布版本, 长期存在
- develop 开发分支, 日常开发的最新代码,会比master分支的内容多,长期存在
- feature 功能分支, 开发新功能时从develop拉取, 开发完成merge回develop, 删除该分支
- release 发布分支,在上线条件ok之后,从develop拉出,之后不做任何新功能添加,只修改bug,最后release就要合并回master, 同时合回develop
- bugfix,修复分支, 从master, develop拉出,修完同样合回去,删除掉
工作流
假设现在有个`git@github.com:test/portal.git`的项目,clone下来,下面开始开发
拉出开发分支
git branch develop git push origin develop现在已经有了master和develop两个长期存在的分支
我要开发新功能了new_job了!
git checkout -b feature_new_job develop git add git commit -m "awsome work" git push从develop创建新的分支, 名字叫feature_new_job, 然后都在上面提交
新功能new_job已经开发完了!
git checkout develop. git pull git merge feature_new_job git push git branch -d feature_new_job 切到develop分支,获取最新代码,合并feature_new_job分支, 提交代码到develop, 删除feature_new_job分支。 在测试环境测试develop分支
准备发版了
git checkout -b release_0.0.1 develop git push改bug, push。。。改bug, push。
代码没问题了!!!真的要上线了
git checkout master git merge release_0.0.1 git push还要合回到develop分支
git checkout develop git merge release-0.1.0 git push git branch -d release-0.1.0