Git 与 GitFlow 工作流

Git 基本操作复习

你们上家公司使用什么进行代码管理的 ? Git、SVN

你们 Git 工作的流程是怎么工作的 ?

你们在使用 Git 的时候有没有做一些限制,或者有没有一些特殊的注意事项 ?

在公司中不使用 github、码云 对项目进行管理,使用公司自己内部搭建的平台 (gitlab)

要求:以下命令,必须非常熟练,不能只记忆步骤,需要掌握每一条命令的含义是什么

  1. git init 如果一个项目需要使用 git 进行托管,需要初始化
  2. git status 查看当前代码的状态 (红色:在开发区,绿色:在暂存区,nothing to commit:开发区没有任何变更)
  3. git checkout -b develop 创建并切换到 【开发基准分支 develop】
  4. git checkout -b feature/xxxx 基于 develop 创建功能分支,功能分支建议以 feature/ 开发
  5. git add . 将代码放到暂存区
  6. git commit -m 功能名称 将代码从暂存区放到本地仓库
  7. git checkout 分支名 切换到某一个分支
  8. git merge feature/xxxx 就是分支合并到另一个分支
  9. git push 将本地仓库的代码推送到远程
  10. git pull 将远程主机的最新内容拉下来后直接合并
  11. git fetch 将远程仓库的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中
  12. git log 查看日志
  13. git log –oneline 查看简洁版日志(推荐)
  14. git reset –hard xxx 还原到某一个节点,节点是提交的某个 commit,需要使用 git log 查看

Git 工作流

如果在你的团队中还没有能形成一个特定有效的工作流程,那么使用 git 混乱就将是不可避免的

混乱体现在两个方面

  1. 分支命名不规范 (login, abc)
  2. 分支提交的流程混乱 (develop)

Git 工作流,就是定义一套分支合并和操作的规范。有的公司可能会自己定义一套 Git 工作流,公司也有可能会使用第三方的 Git 工作流

GitFlow 工作流

Gitflow 就是一套 Git 操作流程,用来规范化、简化 Git 的操作

注意:是基于 Git,并不是完全静 Git 命令进行了 替换,而是共存,在项目中既可以使用 GitFlow ,也可以直接使用 Git

Git-flow 并不是要替代 Git,Gitflow 只是将多条 Git 命令使用脚本将进行了合并、组合,从而简化了操作流程

Gitflow 应该怎么安装

Gitflow 不需要安装,只要电脑上安装了 git ,就能够使用 Gitflow

只需要记住操作的流程并执行 Git-flow 命令,并且附带上正确的参数即可,以及在一个正确的顺序下简单执行那些对应的 Git 命令就可以了

使用 Gitflow:

  1. 记住操作的流程
  2. Git-flow 命令以及参数

GItFlow 初始化

如何在项目中使用 Gitflow

  1. 在项目的根目录下输入: git flow init

  2. 输入命令以后,会显示一个交互式的安装助手,直接一路回车就行,全部使用默认的即可

    Branch name for production releases :询问我们 项目的主分支名字是什么 ?
    Branch name for "next release" development: 询问我们 项目的开发基准分支是什么 ?
    Feature branches :功能分支应该怎么命名 ?  feature/xxxx
    Bugfix branches :Bugfix 分支应该怎么命名 ? bugfix/xxxx
    Release branches : Release 分支应该怎么命名, release/xxxx,   这个分支可以简历理解为是预发布分支
    Hotfix branches : Hotfix 分支应该怎么命名, hotfix/xxx
    Version tag prefix? : 版本号的规则是什么,1.1.1
    复制代码

    \

功能分支

  1. 使用 git flow init 对项目初始化

  2. 将本地代码提交到本地仓库

    git add .
    ​
    git commit -m 初始化
    复制代码
  3. 使用 Gitflow 创建功能分支

    git flow feature start xxxx(分支名)
    复制代码
  1. 完成一个功能

    git flow feature finish xxxx(分支名)
    复制代码
  1. 这个 feature finish 命令会把我们的工作整合到主 develop 分支中去,同时:

    • git-flow 也会进行清理操作。它会删除这个当下已经完成的功能分支
    • 自动切换到 develop 分支

如何修改 develop bug

在将代码合并到 develop 以后,出现了 Bug ,需要创建 bugfix 进行 Bug 修复

  1. 创建 bugfix 分支

    • 名字需要和初始化的时候 bugfix 保持一致
    • 只有一致,才会基于 develop 创建 bugfix 分支
    git flow bugfix start xxx(分支名)
    复制代码
  2. 完成 bugfix 分支

    git flow bugfix finish xxx(分支名)
    复制代码
  3. 在将 bugfix 修复后

    • 将代码合并到 develop
    • 将 bugfix 分支删除

\

发布分支

当 develop 分支满足以下两个条件,那就是时候开始生成一个新的 release 了

  1. 它包括所有新的功能和必要的修复
  2. 它已经被彻底的测试过了

只要满足以上两个条件,就可以创建 release 分支

  1. 创建 release 分支

    • 需要注意的是,release 分支是使用版本号命名的
    git flow release start 版本号
    复制代码
  2. 结束 release 分支

    git flow release finish 版本号
    复制代码
  3. 在结束以后,会出现彩色弹框,需要进行以下处理

    - 按 ctrl + c
    ​
    - 输入 : q a 
    ​
    - 按回车,通常就会退出
    ​
    -------------------------------------------
    ​
    - 如果需要写版本号
    ​
        - i  -- 插入意思,代表能够编辑
    ​
        - 按 ctrl + c
    ​
        - 既然输入的内容,需要保存并退出
    ​
        - : w  q
    复制代码
  1. 这个命令会完成如下一系列的操作:

    • 首先,git-flow 会拉取远程仓库,以确保目前是最新的版本。
    • 然后,release 的内容会被合并到 “master” 这个个分支中去,这样不仅产品代码为最新的版本,而且新的功能分支也将基于最新代码。
    • 为便于识别和做历史参考,release 提交会被标记上这个 release 的名字
    • 清理操作,版本分支会被删除,并且回到 master
    • 如果公司的远程仓库,配置了自动化部署方式,用户就能够看到我们最新的功能

hotfix 分支

很多时候,仅仅在几个小时或几天之后,当对 release \ master版本作做全面测试时,可能就会发现一些小错误。在这种情况下,git-flow 提供一个特定的 hotfix 工作流程

  1. 创建 hotfix 分支

    • 这个分支是基于 master 分支的
    git flow hotfix start xxx(分支名)
    复制代码
  2. 结束 hotfix 分支

    git flow hotfix finish xxx(分支名)
    复制代码
  3. 这个过程非常类似于发布一个 release 版本:

    • 完成的改动会被合并到 master 中,同样也会合并到 develop 分支中,这样就可以确保这个错误不会再次出现在下一个 release 中。

    • 这个 hotfix 程序将被标记起来以便于参考。

    • 这个 hotfix 分支将被删除,然后切换到 “develop” 分支上去。

Git 在使用过程中的注意事项

  1. 不能够在 master 、develop 写任何代码、修改任何 bug,以后开发中,也需要禁止 !!!!!!

  2. develop 需要基于 mater 进行创建,如果 develop 代码出现了问题,也是需要基于 mater 重建

  3. 所有的功能分支,必须基于 develop 进行创建,develop 应该包含所有的功能分支

  4. 分支与分支之间,禁止相互合并,以后在开发中,可能会涉及到 测试分支、预发布上线分支等等等……

  5. 如果 develop 代码出现了 bug,禁止在 develop 分支中直接修改,需要创建 bugfix 分支修改

  6. release 分支是预发布分支

    • 它包括所有新的功能和必要的修复
    • 它已经被彻底的测试过了。如果上述两点都满足,那就是时候开始生成一个新的 release 了
  7. 如果 master、release 代码出现了 bug,禁止在 master、release 分支中直接修改,需要创建 hotfix 分支修改

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享