欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

git 功能工作流

程序员文章站 2022-07-04 22:38:01
...

gitflow 工作流

前言

​ Gitflow 工作流通过功能开发、发布准备和维护设立了独立的分支,让发布迭代过程更加流畅。

1.分支设计

  • master 主干分支

    主分支,为 protect 分支,只允许其他分支 merge ,不允许直接 push 代码。对项目进行 tag 或发布版本等操作。主要 负责管理正在运行的生产环境,永远保持与正在运行的生产环境一致

  • develop 开发分支

    从 master 分支检出,但是团队成员一般不会直接更改该分支,而是从该分支检出自己的 feature fenzhi ,开发完成后,将 feature 和 bug 分支提交到 merge request 到 develop 分支,同时 release 分支由此分支检出。主要负责管理正在开发过程中的代码,一般是最新的代码

  • feature分支 功能分支

    从 develop 分支检出,团队成员每个人都维护一个自己的 feature 分支(针对每个功能开一个 feature 分支进行开发),可以命名为 [feature_xxx] ,开发完成以后提交 merge request ,合并到 develop 分支。一般用来开发新功能或进行项目维护,同时为不影响开发工作,一般把中长期的开发模块,从开发分支中独立出来,开发完成后合并到开发分支

  • hotfix bug 修理分支

    从 master 分支检出,开发遇到 bug ,新开一个 bug 分支,修复后,也提交 merge request 到 develop。主要负责管理生产环境下出现的紧急 修复的代码,从主干分出,修理完毕并测试上线后,并回主干分支。并回后,视情况删除,属于临时性分支

  • fix分支 补丁分支

    从 develop 分支检出,用作 bug 修复,bug 修复后需要 merge 回 develop 分支,并将其删除,属于临时性分支

  • release 准生产分支(预发布分支)

    较大版本上线前,会从开发分支中分出准生产分支,进行最后阶段的集成测试。该版本上线后,会合并到主干分支。生产环境运行一段时间稳定后,可以视情况删除

2.工作流

1.奶糖在 master 分支上完成 V0.1 版本的开发
2. master 分支出现 bug ,进行紧急修复。新建并检出 hotfix 分支修复,merge 回 master 分支,发布版本v0.2
3. 奶糖新建并检出 develop 分支进行迭代开发。在 develop 分支上检出 release01 分支,进行发版前的测试和 bug 。后 fix bugs in release01。完成后将release01分支 merge 回 develop 和 master 分支,并发布版本v0.3
4. 添加队员,新队员在 develop 上新建并检出自己的 feature 分支,开发后 merge 回 develop 分支。此处要利用 rebase 操作和冲突解决。
5. 奶糖在develop 上检出release02分支,再次进行发版前测试和 bug 修复, fix bugs in release01。 完成后将release01分支 merge 回 develop 和 master 分支,并发布版本v1

分析拆解各种类型分支的用法

  1. 奶糖在做一个叫做 testing 的项目,并托管到了 Github 上。

    (根据 Github 上的提示,在本地新建一个项目,并关联到 github 上的 origin/master.此时开发一个很小的demo功能,并在 master 分支上进行 tag 操作,命名为 v01.)

  2. 此时 master 分支的代码在线上运行,同时又要快开发新功能。

    在 master 分支上新建并检出 develop 分支,在develop 分支上开发新功能,结束需要提交到远端。

    1. git brabch develop master // 从master分支上新建develop分支
    
    2. git checkout develop      //检出 develop 分支
    3. ... //此处进行功能开发,并 add 和 commit 到 develop 分支
    4.git push origin develop   //推送 develop 分支到远端的 origin/develop
    

    此时远端 github 上有两个分支:master 和 develop。
    git 功能工作流
    此时会出现两种情况,如下所示

    • 修改 bug

      线上版本(master 分支)出现紧急 bug ,需要修复。需要用到 hotfix.

1. git checkout master    //切回 master 分支
2. git checkout -b hotfix master  //新建、并切换到 hotfix 分支
3. ... // bug 修复工作
4. git checkout master           //切换回 master 分支
5. git merge --no-ff hotfix       //合并 hotfix 分支到 master 分支,此时									  bug 已经修复,无冲突
6. git tag v0.2                   //新建 tag v0.2
7. git push origin --tags   //推送 tag 到远端的 origin/tag

图解过程:
git 功能工作流

  • develop 开发完成,进行测试和提交。需要用到 release

      1. git checkout develop      //切换回 develop 分支
      
      2. git checkout -b release01 develop  //新建、切换到release01
      
      3. ... //进行测试、bug修复等工作
      
      4. git checkout develop //切回 develop 分支
      
      5. git merge --no-ff release01  //合并release01 分支到develop分支(无冲突)
      
      6. push origin develop  //推送develop分支到远端 origin/develop(无冲突)
      
      7. git checkout master   //切换到 master 分支  
      
      8. git merge --no-ff release  //合并 release01 到 master 分支(无冲突)
         
      9. git tag v0.3             //新建 tag v0.3
         
      10. push origin master   ///推送 master 分支代码到远端的 origin/master
      
      11.git push origin --tags   //推送 tag 到远端的 origin/tag
    

详细图解:
git 功能工作流

  1. 加入新队员,开发不同功能,用到 feature 功能

    • 每个人应该做的
    git clone xxxx.git
    git checkout develop
    git checkout -b feature-xx develop
    
    1. 奶糖进行操作进行首次提交到了 github 远端
     1. git checkout -b feature-hu develop
     2. ...  //进行功能开发,不断add 和 commit
     3. git checkout develop 
     4. git pull origin develop  //更新到远端代码,看develop分支是                                    否更新(无更新)
     5. git checkout feature-hu   //切回featurep分支
     6. rebase develop //合并develop分支到feature分支,并解决冲突(无冲突)
     7. git checkout develop  //切回develop分支
     8. git merge --no-ff feature-hu //合并feature到develop分支
     9. git push origin develop   //推送develop分支到远端
    

    图解详情
    git 功能工作流
    3. 其他人在奶糖之后进行 push 操作

    1. git checkout-b feature-z develop //从develop分支新建并检出feature分支
    2. ...  // 进行功能开发,不断进行add 和commit
    3. git checkout develop  
    4. git pull origin develop  //更新远端代码,看develop是否有更新
    5. git checkout feature-z  
    6. git rebase develop    //合并develop到feature分支,解决冲突(有冲突)
    7. ...   //冲突解决
    8. git add .  //解决完冲突后执行 add 操作
    9. git rebase --continue //继续刚才的 rebase 操作
    10.git checkout develop   //切回 develop 分支
    11.git merge --no-ff feature-z  //合并feature分支到develop分支(无冲突)
    12.git push origin develop //推送develop分支到远端 
    
    1. 团队 其他人进行开发,检出自己的 feature 分支就可以了

    注意:

    奶糖进行pull操作,既可以看到 z 进行的操作。

  2. 再次进行测试、发版操作,需要再次新建并检出 release 分支,重复2的步骤

##3.几个命令的区别

  1. git merge 和 get rebase
git merge git rebase
1.显性合并
2.合并分支,解决完冲突,执行add
和commit操作,会产生一个额外的commit
1.隐形合并
2.合并分支,解决完冲突,执行add
和git rebase --continue 不会产生额外
的commit(主分支上无意义的)
  1. git pull
  • git pull

    执行 git pull时,是同时执行了 git fetch 和 git merge 两个操作

  • git pull -rebase

    不进行 merge 操作 ,即不想留下合并记录,可以用这个命令,不会产生无用的commit(主分支上无意义的) |

  1. git pull
  • git pull

    执行 git pull时,是同时执行了 git fetch 和 git merge 两个操作

  • git pull -rebase

    不进行 merge 操作 ,即不想留下合并记录,可以用这个命令

相关标签: 软件测试