git flow

背景

这几年一直在用git, 但是一直感觉一直没用好, 原因还是多人协助的大型项目比较少。最近在做前后端分离的项目, 多人协作,并且接入公司发布系统,这个时候统一的git工作流就显得非常重要了。 问题如下

  1. 在什么分支进行开发?
  2. 用什么分支部署到测试环境?
  3. 用什么分支部署到线上环境?
  4. 改bug时候怎么处理?
  5. pull request怎么用?

带着这些问题, 对使用最广泛的git flow进行了学习, 规范大家的工作流。

git flow

分支

  1. master 主分支,永远保证稳定的发布版本, 长期存在
  2. develop 开发分支, 日常开发的最新代码,会比master分支的内容多,长期存在
  3. feature 功能分支, 开发新功能时从develop拉取, 开发完成merge回develop, 删除该分支
  4. release 发布分支,在上线条件ok之后,从develop拉出,之后不做任何新功能添加,只修改bug,最后release就要合并回master, 同时合回develop
  5. bugfix,修复分支, 从master, develop拉出,修完同样合回去,删除掉

工作流

假设现在有个`git@github.com:test/portal.git`的项目,clone下来,下面开始开发

  1. 拉出开发分支

    git branch develop
    git push origin develop
    

    现在已经有了master和develop两个长期存在的分支

  1. 我要开发新功能了new_job了!

    git checkout -b feature_new_job develop 
    git add
    git commit -m "awsome work"
    git push
    

    从develop创建新的分支, 名字叫feature_new_job, 然后都在上面提交

  1. 新功能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分支
    
  1. 准备发版了

    git checkout -b release_0.0.1 develop
    git push
    

    改bug, push。。。改bug, push。

  1. 代码没问题了!!!真的要上线了

    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