Git 工作流记录

Git 工作流

1. Git的优势

  • 分布式的版本管理,可以离线工作
  • 记录整个分支的变更记录
  • 切换分支很快

2. 中心式协同工作流

2.1 介绍

  1. 从服务器上 git pull origin master把代码同步下来
  2. git commit到本地仓库
  3. git push orgin master远程仓库

2.2 异常情况

​ 如果在第 3 步发现 push 失败,因为别人已经提交了,那么你需要先把服务器上的代码给 pull 下来,为了避免有 merge 动作,你可以使用 git pull --rebase 。这样就可以把服务器上的提交直接合并到你的代码中,对此,Git 的操作是这样的。

Git 工作流记录

3 功能分支协同工作流

3.1介绍

  1. git checkout -b new-feature 创建“new-feature”分支(针对某一功能)
  2. 负责该分支的人员进行add、commit操作
  3. 开发完成后git push -u orgin new-feature 把分支push到服务器上
  4. 其他人员 git pull -rebase 拿到最新的这个分支的代码
  5. 最后 Pull Request 方式Code Review后合并到Master分支上

3.2 分支模型图

Git 工作流记录

4. GitFlow 协同工作流

4.1 背景需求

  1. 有一个分支保持干净,永远可以发布到线上
  2. 代码可以上线时依旧可以开发下一个版本的代码
  3. 已经发布的代码可以做Bug-Fix,而且不会把正在开发的代码提交到生产线上去

4.2 介绍

Git 工作流记录

4.3 分支类型

  • master分支:主干分支,用作发布环境,上面的每一次提交都是可以发布的。
  • Feature分支:功能分支,用于开发功能,对应开发环境
  • Developer分支:开发分支,一旦功能开发完成,就把功能分支向Developer分支合并,合并完成后删除功能分支。这个分支对应集成测试环境
  • Release分支:当Developer分支测试达到可以发布时,开出一个Release分支做发布前的准备工作(对应预发环境) Release分支可以上线时,把Release分支向Master分支和Developer分支同时合并,保证代码一致性,然后把Release分支删除
  • HotFix分支:处理线上Bug分支,从Master分支拉出,处理完成后向 Developer和Release分支合并

5 GitHub Flow

5.1 介绍

  1. 把官方库的代码fork到自己的代码库

  2. 开发人员再自己的代码库中任意开发

  3. 开发人员的代码库中配置两个远程仓库,一个自己的远程昂库,一个官方仓库

  4. 本地建“功能分支”,在该分支上做代码开发

  5. 功能被push到开发人员自己的代码仓库中

  6. 向“官方库”发起pull request,并做Code Review,一旦通过就向官方库合并。

    比较依赖好的CI/CD工具

6 GitLab Flow

6.1 介绍

相比GitHub Flow,引入环境分支

Git 工作流记录

7 协同工作流的本质

  1. 不同团队能尽可能地并行开发
  2. 不同软件版本和代码的一致性
  3. 不同环境和代码的一致性
  4. 生产环境上的代码总是能对应到稳定的代码上