gitflow 工具使用

一. git-flow 前情提要

model:
  1. http://nvie.com/posts/a-successful-git-branching-model/
  2. http://nvie.com/files/Git-branching-model.pdf
工具:
  1. 使用介绍:https://github.com/nvie/gitflow
  2. git-flow 安装:https://github.com/nvie/gitflow/wiki/Installation
  3. git-flow completion 安装:

二. 代码库使用说明

图形示例图

五角星表示临时代码库,圆柱体表示远端代码库。
原则上,master 和 develop 分支永远存在。

image.png
个人开发流程
  1. 初始流程

    > git flow init -f
        
    Which branch should be used for bringing forth production releases?
       - develop
       - master
       - rc9.2
    Branch name for production releases: [master] master
        
    Which branch should be used for integration of the "next release"?
       - develop
    Branch name for "next release" development: [develop] develop
        
    How to name your supporting branch prefixes?
    Feature branches? [feature/] feature
    Release branches? [release/] release
    Hotfix branches? [hotfix/] hotfix
    Support branches? [support/] support
    Version tag prefix? [v] v  
    
    1. git clone <user>@<ip addr>:<repo>
      从远端拉下代码分支 master 和 develop

    2. git flow init -d
      在该项目下建立 git flow 默认初始化配置

    3. git flow init -f
      重新配置 git flow,示例如下
      再次强烈建议使用 git bash completion,无惧复杂分支名

      • master 分支名: master
      • development 分支名: develop
      • feature 分支名:feature
      • release 分支名:release
      • hotfix 分支名:hotfix
      • support 分支名:support
      • version 标签前缀:v
  2. 开发流程

    > git flow feature start cs
    Switched to a new branch 'feature/cs'
    
    Summary of actions:
    - A new branch 'feature/cs' was created, based on 'develop'
    - You are now on branch 'feature/cs'
    
    Now, start committing on your feature. When done, use:
    
    git flow feature finish cs
    
    > git flow feature finish cs
    Switched to branch 'develop'
    Your branch is up-to-date with 'origin/develop'.
    Already up-to-date.
    Deleted branch feature/cs (was bd890d0).
    
    Summary of actions:
    - The feature branch 'feature/cs' was merged into 'develop'
    - Feature branch 'feature/cs' has been removed
    - You are now on branch 'develop'
    
    1. git flow feature start <name>
      建立当前任务的 feature,如 git flow feature start cs,即建立一个分支名为 feature/cs,并切到该分支

      • 具体操作:
        • git checkout -b feature/<name> develop
          基于 develop 分支生成新分支 feature/<name>,并切到该分支
    2. 在 feature 分支进行开发,如需调试,可 push 到远端

    3. git flow feature finish <name>
      结束 feature 分支,并 merge 至 develop
      具体操作:

      • 检查当前 feature 和 develop 分支是否有冲突,有则提示解决冲突,没有则继续以下流程
      • git checkout develop
        切换到 develop 分支
      • git merge --no-ff feature/<name>
        merge feature/<name> 分支,并保留该分支 git 记录
      • git branch -d feature/<name>
        删除本地 feature 分支
        注:如果该分支已经上传到远端,则不影响远端分支
    4. git push
      上传 develop 分支

  3. 测试流程
    在一个版本结束提交 QA 测试时进行该流程。
    该流程由将项目管理者操作,个人开发者无需操作

    > git flow release start 1.6
    Switched to a new branch 'release/1.6'
    
    Summary of actions:
    - A new branch 'release/1.6' was created, based on 'develop'
    - You are now on branch 'release/1.6'
    
    Follow-up actions:
    - Bump the version number now!
    - Start committing last-minute fixes in preparing your release
    - When done, run:
    
     git flow release finish '1.6'
    
    > git flow release finish 1.6
    Switched to branch 'master'
    Your branch is up-to-date with 'origin/master'.
    Merge made by the 'recursive' strategy.
     c | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    Switched to branch 'develop'
    Your branch is up-to-date with 'origin/develop'.
    Merge made by the 'recursive' strategy.
     c | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    Deleted branch release/1.6 (was d829ec5).
    
    Summary of actions:
    - Latest objects have been fetched from 'origin'
    - Release branch has been merged into 'master'
    - The release was tagged 'v1.6'
    - Release branch has been back-merged into 'develop'
    - Release branch 'release/1.6' has been deleted
    
    1. git flow release start <name>
      建立当前版本的 release,如 git flow release start 1.1.2
      具体操作:
      • 检查是否已经有 release 分支,有则提示先结束 release 分支,没有则继续以下流程
      • git checkout -b release/<name> develop
        基于 develop 分支生成新分支 release/<name>,并切到该分支
    2. 选做,增加版本号
      • ./bump-version.sh 1.1.2
      • git commit -a -m "Bumped version number to 1.1.2"
    3. 选做,将 release 分支上传至远端,建议执行
      • git push
    4. QA 同学进行测试。如果测试时需要进行 bugfix,则在 release 分支上进行修改(此时必须执行3)
    5. git flow release finish <name>
      完成 release 测试,自动将代码 merge 到 master 和 develop 分支
      • git checkout master
        切换至 master 分支
      • git merge --no-ff release/<name>
        将 release 分支 merge 到 master 分支
      • git tag -a 1.2.2
        打 tag
      • git checkout develop
        切换至 develop 分支
      • git merge --no-ff release/<name>
        将 release 分支 merge 到 develop 分支
      • git branch -d release
        删除本地 release 分支
    6. git checkout master
      git push
      上传 master 分支
    7. git checkout develop
      git push
      上传 develop 分支
  4. hotfix 流程

    > git flow hotfix start 1.9
    Switched to a new branch 'hotfix/1.9'
    
    Summary of actions:
    - A new branch 'hotfix/1.9' was created, based on 'master'
    - You are now on branch 'hotfix/1.9'
    
    Follow-up actions:
    - Bump the version number now!
    - Start committing your hot fixes
    - When done, run:
    
     git flow hotfix finish '1.9'
    
    > git flow hotfix finish 1.9
    Switched to branch 'master'
    Your branch is up-to-date with 'origin/master'.
    Merge made by the 'recursive' strategy.
     c | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    Switched to branch 'develop'
    Your branch is up-to-date with 'origin/develop'.
    Merge made by the 'recursive' strategy.
     c | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    Deleted branch hotfix/1.9 (was 83e4746).
    
    Summary of actions:
    - Latest objects have been fetched from 'origin'
    - Hotfix branch has been merged into 'master'
    - The hotfix was tagged 'v1.9'
    - Hotfix branch has been back-merged into 'develop'
    - Hotfix branch 'hotfix/1.9' has been deleted
    
    1. git flow hotfix start <name>
      基于 master 分支 新建分支 hotfix/<name>
    2. 在该分支上进行 hotfix
    3. git flow hotfix finish <name>
      结束 hotfix 分支,并 merge 到 master 分支和 develop 分支
      具体操作:
      • git checkout master
      • git merge --no-ff hotfix/<name>
      • git checkout develop
      • git merge --no-ff hotfix/<name>
    4. git checkout master
      git push
      上传 master 分支的修改
    5. git checkout develop
      git push
      上传 develop 分支的修改
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容

  • Git 命令 mkdir testcd testtouch a.md alias 设置别名 git config ...
    任教主来也阅读 662评论 0 0
  • Git分支管理 master:主分支,当前分支上的代码随时可以直接发布,并且只能通过Pull Request从其他...
    UEUEO阅读 9,600评论 5 33
  • 我想这2个字的含义基本上每个人都明白,而且每个人都有自己热爱的事情。我个人非常热爱旅行,当我看到或者听到一...
    freeman1988阅读 152评论 0 1
  • 人来人往的大街上,一张张陌生的面孔,像一个个田地里的小麦。走在这热闹的大街上,耳中充斥着汽车的鸣笛声,孩子的哭闹声...
    奈何沉沦阅读 271评论 0 2
  • 送别,是曾经的“孤帆远影碧空尽”,是曾经的“雪上空留马行处”,是曾经的“挥手自兹去”……那种慢,如今没有了。或许...
    Love眼前人阅读 159评论 0 0