`
骑猪逛街666
  • 浏览: 142009 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

rdc最佳实践之开发模式——git flow

 
阅读更多

阅读原文请点击

摘要: 今天新建项目的时候,发现`rdc`除原有的`分支模式`以外还增加了`master分支开发模式`和`git flow模式`,这是一件非常令人欣喜的事情——毕竟`git flow`是一个流传已久的,大家都普遍接受的开发模式。

引子

今天新建项目的时候,发现rdc除原有的分支模式以外还增加了master分支开发模式git flow模式,这是一件非常令人欣喜的事情——毕竟git flow是一个流传已久的,大家都普遍接受的开发模式。
于是我就把应用删掉了,改用git flow模式,目前体验很完美。
鉴于很多人可能还不太了解git flow,本文就对此分享一些微小的经验。

前言

你会用git吗?

我相信在座的大多数人都会自信的回答:“会”。
而实际上,大家可能从来没有考虑过自己的用法是否真的科学,真的健壮,尤其是项目越来越大,人数越来越多,周期越来越长的时候。

其中,典型的有以下几个问题:

  1. 当我开发某个功能到一半的时候,PM突然给我安排了一个新的紧急任务,我该怎么开始这个任务,而不影响现在的?
  2. 当我代码写好了的时候,如何发布?
  3. 当我发布后,代码出问题了,如何快速修复?
  4. 以上的情况,还要求修复后,还要包含之后开发的所有代码?

大部分开发人员使用git的时候,基本只使用两个甚至一个分支,所以下面的这些理念,显然是打开了一扇新世界的大门了。

方案

显然,不光代码有代码规范,代码的管理和协同同样需要一个清晰的流程和规范,由此,行业内的通用解决方案是Git Flow

git-flow

怎么样,眼花缭乱吧,不过我可以给你个建议:把头左转90度,别着急骂....这是office picture,并非我画的。

在上面这幅图上,最上面的一行,代表分支,它们分别是

|名称|解释
|-|-
|master|这个分支最近发布到生产环境的代码,最近发布的Release, 这个分支只能从其他分支合并,不能在这个分支直接修改
|Develop|这个分支是我们是我们的主开发分支,包含所有要发布到下一个Release的代码,这个主要合并与其他分支,比如Feature分支
|Feature|这个分支主要是用来开发一个新的功能,一旦开发完成,我们合并回Develop分支进入下一个Release
|Release|当你需要一个发布一个新Release的时候,我们基于Develop分支创建一个Release分支,完成Release后,我们合并到Master和Develop分支
|Hotfix|当我们在Production发现新的Bug时候,我们需要创建一个Hotfix, 完成Hotfix后,我们合并回Master和Develop分支,所以Hotfix的改动会进入下一个Release.

实现细则

master分支

在master分枝上工作,我们需要遵循一个基本原则,所有在master分支上的commit应该tag.

git-flow

feature分支

feature分支做完后,必须合并回develop分支, 合并完分支后一般会删点这个feature分支,但是我们也可以保留

git-flow

开始一个新的功能的开发

git checkout -b some-feature develop
# Optionally, push branch to origin:
git push -u origin some-feature    

# 做一些改动    
git status
git add some-file
git commit    

开发完成

git pull origin develop
git checkout develop
git merge --no-ff some-feature
git push origin develop

git branch -d some-feature

# If you pushed branch to origin:
git push origin --delete some-feature    

release分支

分支名 release/*
release分支基于develop分支创建,打完release分支后,我们可以在这个release分支上测试,修改bug等。同时,其它开发人员可以基于开发新的feature,一旦打了release分支之后不要从develop分支上合并新的改动到Release分支
发布release分支时,合并releasemasterdevelop, 同时在master分支上打个tag记住release版本号,然后可以删除release分支了(当然,你可以选择不删除)。

git-flow

开始release

git checkout -b release-0.1.0 develop

# Optional: Bump version number, commit
# Prepare release, commit

完成release

git checkout master
git merge --no-ff release-0.1.0
git push

git checkout develop
git merge --no-ff release-0.1.0
git push

git branch -d release-0.1.0

# If you pushed branch to origin:
git push origin --delete release-0.1.0   


git tag -a v0.1.0 master
git push --tags

hotfix

分支名 hotfix/*
hotfix分支基于master分支创建,开发完后需要合并回masterdevelop分支,同时在master上打一个tag
git-flow

开始hotfix

git checkout -b hotfix-0.1.1 master    

完成hotfix

git checkout master
git merge --no-ff hotfix-0.1.1
git push


git checkout develop
git merge --no-ff hotfix-0.1.1
git push

git branch -d hotfix-0.1.1

git tag -a v0.1.1 master
git push --tags

工具

如果你能坚持看到这里,我真的为你感到欣喜,这说明你是用心学习的,并且是不畏艰险的,毕竟上面那么长的一大串的代码,可能已经使你感到畏惧。
而显然的是,作为通用的一个解决方案,不可能这么繁琐,那么,唯一的可能是——有!工!具!

平台 命令
OS X brew install git-flow
Linux apt-get install git-flow
Windows wget -q -O - --no-check-certificate https://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh
IDEA Git Flow Integration

其中还有一大部分是gui的,比较简单,本文就不再赘述了。下面着重介绍下命令行下的使用

  • 初始化: git flow init
  • 开始新Feature: git flow feature start MYFEATURE
  • Publish一个Feature(也就是push到远程): git flow feature publish MYFEATURE
  • 获取Publish的Feature: git flow feature pull origin MYFEATURE
  • 完成一个Feature: git flow feature finish MYFEATURE
  • 开始一个Release: git flow release start RELEASE [BASE]
  • Publish一个Release: git flow release publish RELEASE
  • 发布Release: git flow release finish RELEASE 别忘了git push --tags
  • 开始一个Hotfix: git flow hotfix start VERSION [BASENAME]
  • 发布一个Hotfix git flow hotfix finish VERSION

仔细观察,这些命令都是有规矩的,它们大概可以如下图表示

git-flow

阅读原文请点击

分享到:
评论

相关推荐

    免费远程桌面软件RDC2.1.1

    标题中的“RDC2.1.1”指的是微软的Remote Desktop Connection(远程桌面连接)客户端,这是一款允许用户从Mac操作系统远程访问Windows系统的应用程序。在IT领域,远程桌面连接是技术人员、开发者和系统管理员常用的...

    藏经阁-阿里巴巴持续交付实践.pdf

    开发人员可以根据需要选择适合的协作模式,快速地响应市场变化。 自动化所有可以自动化的环节 阿里巴巴持续交付实践强调自动化所有可以自动化的环节,以提高效率和降低错误率。 灵活的发布工具 阿里巴巴持续交付...

    简单的Java窗体设计(RDC计算程序)

    在Java编程领域,Java窗体设计是构建图形用户界面(GUI)的重要部分,它使得用户可以通过可视化组件与程序进行交互。本项目“简单的Java窗体设计...同时,它也展示了如何利用NetBeans IDE简化开发流程,提高开发效率。

    RDC8820 User’s Manual

    根据提供的文件内容,以下是对标题和描述中所...根据提供的文件内容,可以推测手册详细描述了RDC8820微控制器的硬件架构、操作方法和性能参数,是开发人员在设计和调试使用RDC8820微控制器的产品时不可或缺的参考资料。

    TC27xC_Rdc_Openloop.7z

    标题“TC27xC_Rdc_Openloop.7z”指的是一个与英飞凌(Infineon)的TC275微控制器相关的资源包,重点在于电机控制,特别是永磁同步电机(PMSM)的磁场定向控制(FOC)以及电阻检测电路(RDC)。这个压缩包包含了两个...

    rdc for Mac

    需要注意的是,使用任何远程桌面工具都应确保遵循网络安全的最佳实践,比如使用强密码、启用双因素认证,以及避免在不安全的网络环境下进行敏感操作。此外,保持软件更新以获得最新的安全补丁也是至关重要的。 在...

    远程桌面软件MAC FOR RDC

    本文将详细探讨“MAC FOR RDC”这款专为Mac用户设计的免费远程桌面连接工具,以及其核心功能和使用方法。 标题中的“MAC FOR RDC”指的是Mac版本的Remote Desktop Connection(RDC),它允许用户从苹果操作系统远程...

    RDO+RDC 远程管理工具

    RDO+RDC 远程管理工具

    瑞萨RDC旋变应用笔记

    应用笔记后续的部分可能涵盖了RDC3A的配置方法、工作模式、误差分析、干扰抑制策略以及实际应用中的注意事项等内容。对于开发和调试使用RH850/C1M-A微控制器和RDC3A的工程师来说,这些信息至关重要,可以帮助他们...

    巴西最新GMP标准RESOLUTION - RDC Nº 17, OF 16.04.10

    标题与描述概述的知识点主要涉及巴西最新的药品生产质量管理规范(GMP)标准——决议RDC N°17,于2010年4月16日发布。此标准旨在为药品制造设定最低要求,以标准化卫生监督过程中的GMP合规性检查。以下是对标题、...

    RDC-DD(充电桩A+6标准) 62955(1)

    RDC-DD(充电桩A+6标准) 62955(1)

    RDC Managment

    Microsoft Remote Desktop Management(RDC Management),通常称为RDCMan,是一款由微软开发的强大工具,专为IT专业人员设计,用于集中管理和控制多台远程桌面连接。 **RDCMan的特点和功能** 1. **集中式管理**: ...

    基于高精度数字解码RDC芯片的旋转变压器解调方法.pdf

    然而,光电编码器在恶劣环境下抗干扰能力较低,霍尔传感器不能实现高精度实时控制,因此,在航天航空伺服系统中,旋转变压器成为最佳选择。 为了将旋转变压器的输出信号解码,本研究提出了一种基于专用轴角数字转换...

    AD2S1210 RDC模块资料.rar_AD2S1210_ad1210数据_clubaj2_rdc_rdc模块

    RDC模块是AD2S1210的关键功能之一,它能够将传感器的电阻变化转换为数字信号。在传统的电位器或电阻式编码器中,电阻的变化通常需要通过模数转换器(ADC)进行测量,而AD2S1210的RDC模块则内置了这个功能,减少了外部...

    F28335_RDC_Serial_Flash.rar_AD2S1210 DSP_AD2S1210_DSP_DSP RDC_

    AD2S1210驱动 DSP版本,内部有模拟SPI读写程序,实现普通模式读取角度

    如何利用Aurix的DSADC模块来完成RDC功能_DSADC_aurix_

    本篇将详细介绍如何利用Aurix的DSADC模块来实现旋转变压器(Resolver-to-Digital Converter,RDC)的软解码功能。 首先,理解DSADC的工作原理至关重要。DSADC采用Σ-Δ调制技术,通过高频率的采样和积分过程来提高...

    如何利用Aurix的DSADC模块来完成RDC功能.pdf

    ### 如何利用Aurix的DSADC模块来完成RDC功能 #### 一、概述 在现代电机控制领域,特别是高精度伺服系统中,对于旋转角度的精确测量至关重要。旋转变压器(Resolver)作为传统且可靠的角度检测元件,在诸多行业中...

    RDCMan_msi.zip_rdc man_rdcm_rdcman msi_rdcman 中文版_rdcman中文版

    7. **安全性**:使用RDCMan时,用户需遵循安全最佳实践,如使用强密码、加密连接以及限制不必要的网络访问,以保护远程系统的安全。 8. **适用人群**:RDCMan主要面向IT管理员、系统工程师等需要频繁进行远程桌面...

    RDC区域配送中心选址设计.doc

    RDC区域配送中心选址设计 本文档介绍了RDC(Regional Distribution Center)区域配送中心的概念和选址设计要求。RDC是一种集仓储、配送、流通加工、信息管理、客户服务等为一体的综合物流中心,旨在提高库存集约化...

Global site tag (gtag.js) - Google Analytics