zoukankan      html  css  js  c++  java
  • GitFlow入门

    1-概述

    学会使用 Git 的同时, 也得学会使用 GitFlow, GitFlow 是建立在 Git 的基础之上, 对 Git 命令进行了一次封装.

    大多数开发人员使用的 Git 时, 顶多有三个分支: 一个是 master, 一个是 develop, 再就是在 develop 分支上拉出来的开发分支, 或者就是直接在 master 分支上拉出一个分支进行开发.

    这样开发比较快速, 对于小团队来说, 已经满足了. 但是随着团队人数的增多, 项目越做越大, 就会出现各种各样的问题, 首当其冲的就是代码功能分布杂乱.

    就像代码需要代码规范一样, 代码管理同样需要一个清晰的流程和规范, 这就是 GitFlow.

    2-GitFLow分支介绍

    一张图让你对 GitFlow 有一个认识:

    GitFlow运行示意图

    下面是我对每个分支的理解.

    2.1-master 分支

    这个分支就是生产分支, 只有 hotfix 分支和 release 分支的代码可以合并进来, 每一次合并都会打一个 tag.

    2.2-develop 分支

    这个分支是基于 master 创建的, 包含所有下一个 release 分支的代码.

    2.3-feature 分支

    这个分支是从 develop 分支创建的, 主要用于开发新的功能, 如果功能要发布了, 则合并到 develop 分支.

    2.4-release 分支

    这个分支是基于 develop 分支创建的, 创建出 release 分支之后, 部署到测试环境, 测试人员进行测试, 如果有问题, 直接在 release 分支上进行修改, 然后合并到 develop 分支, 每一次修改都需要合并待 develop 分支.

    如果测试通过, 该分支的使命结束, 将 release 分支的代码分别合并到 master 分支和 develop 分支.

    2.5-hotfix 分支

    如果 master 版本出现 bug 时, 从 master 上拉取一个 hotfix 分支, 完成 hotfix 后, 合并到 master 分支和 develop 分支.

    3-GitFlow命令

    简单说, GitFlow 就是把平时我们使用的 git 命令合并起来执行, 本质上可以直接使用普通的 git 命令进行类似 gitflow 的分支管理.

    3.1-初始化

    使用 git flow init 在现有的 Git 项目中进行初始化, 如果远端有 develop 分支, 需要将本地刚刚初始化的分支和远端相关联(git branch --set-upstream-to=origin/develop develop), 然后拉取远端的代码.

    如下:

    ➜ gitflow git:(master) git flow init
    
    Which branch should be used for bringing forth production releases?
       - master
    Branch name for production releases: [master]
    Branch name for "next release" development: [develop]
    
    How to name your supporting branch prefixes?
    Feature branches? [feature/]
    Release branches? [release/]
    Hotfix branches? [hotfix/]
    Support branches? [support/]
    Version tag prefix? []
    

    执行完之后, 默认使用 master 作为生产分支, 然后在本地创建一个 develop 分支并切换过去, 然后设置每个特征分支的前缀, 默认即可.

    之后我们将 develop 分支推上去(git push -u origin develop).

    3.2-feature分支

    # 创建一个 feature 分支
    git flow feature start feature01
    
    # 推送本地 feature 分支到远端
    git flow feature publish feature01
    
    # 拉取远端的 feature 分支到本地
    git flow feature pull origin feature01
    git flow feature track feature01
    
    # 完成 feature 分支
    git flow feature finish feature01
    

    无论在哪个分支上执行 start, 新创建的 feature 分支总是基于 develop 分支进行创建.

    无论在哪个分支上执行 finish, 命令执行结束后, feature 分支会被合并到 develop 分支, 然后 feature 分支会被自动删除.

    3.3-release分支

    # 创建一个 release 分支, 后面的 base: 即提交记录的 sha-1 hash 值, 这个值必须是 develop 分支下的
    git flow release start release01 [base]
    
    # 推送本地 release 分支到远端
    git flow release publish release01
    
    # 拉取远端的 release 分支到本地
    git flow release pull origin release01
    git flow release track release01
    
    # 完成 release 分支
    git flow release finish release01
    

    无论在哪个分支上执行 start, 新创建的 release 分支总是基于 develop 分支进行创建.

    无论在哪个分支上执行 finish, 命令执行结束后, release 分支会被合并到 develop 分支和 master 分支, 然后在 master 分支上打一个 tag, 最后 release 分支被删除.

    最后不要忘记 push tag(git push --tags).

    3.4-hotfix分支

    # 创建一个 hotfix 分支
    git flow hotfix start hotfix01
    
    # 完成一个 hotfix 分支
    git flow hotfix finish hotfix01
    

    无论在哪个分支上执行 start, 新创建的 hotfix 分支总是基于 master 分支进行创建.

    无论在哪个分支上执行 finish, 命令执行结束后, hotfix 分支会被合并到 master 分支, 然后在 master 分支上打一个 tag, 然后 hotfix 分支又合并到了 develop 分支, 最后 hotfix 分支被删除了.

    最后不要忘记 push tag(git push --tags).

    3.5-support分支

    support 功能只是测试版本, 不建议使用.

    3.6-tag

    4-安装GitFlow

    4.1-Mac

    brew install git-flow
    

    4.2-CentOS

    yum install -y epel-release
    yum install -y gitflow
    

    4.3-Ubuntu

    apt-get install git-flow
    

    5-客户端工具

    当然是 SourceTree.

    并不推荐使用客户端工具, 多敲键盘少用鼠标.

    6-参考资料

    1. http://danielkummer.github.io/git-flow-cheatsheet/index.zh_CN.html
    2. https://www.cnblogs.com/wish123/p/9785101.html
    3. https://www.git-tower.com/learn/git/ebook/cn/command-line/advanced-topics/git-flow
  • 相关阅读:
    博客的不少图都挂了
    Xilinx EDK "ERROR:Xst:2647
    Xilinx ISE Isim仿真错误的解决方法
    LabVIEW 三维机器人展示
    放弃使用Chrome浏览器(包括360极速浏览器等)的自动密码保存功能吧 我来把密码显示给你看
    安卓手机与PC不得不说的那些事 之 篇一 网络分享
    (MCCDAQ)USB 1208 坑爹的螺丝端子设计
    Xilinx ZedBoard Run Xilinux
    VMPlayer 安装 Ubuntu 12.04 一个注意点
    【C++】判断一个图是否有环 无向图 有向图(转载)
  • 原文地址:https://www.cnblogs.com/wuqinglong/p/11505618.html
Copyright © 2011-2022 走看看