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 bash
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

相关文章
|
6月前
|
存储 开发工具 git
Git的正确使用姿势与最佳事件:团队协作开发和版本控制的最佳实践
Git 是目前最流行的分布式版本控制系统之一,它提供了强大而灵活的工具来管理项目的版本和协作开发。无论您是个人开发者还是团队成员,掌握 Git 的使用方法都是必不可少的。本文将引导您从 Git 的基础知识开始,逐步探索 Git 的进阶功能。
|
7天前
|
Ubuntu 开发工具 git
Git高手必备:掌握这些版本控制最佳实践,让你的代码管理效率翻倍!
【10月更文挑战第25天】使用 Git 进行版本控制是现代软件开发的重要部分。本文详细介绍了 Git 的安装、配置、基本操作、分支管理、冲突解决及常用命令,帮助开发者提高工作效率,确保代码质量和团队协作的顺利进行。通过合理使用 Git,可以有效管理代码变更,支持多人协作,并追踪历史记录。
28 4
|
2月前
|
安全 网络安全 开发工具
深入探索Git:全面解析Git的用法与最佳实践
深入探索Git:全面解析Git的用法与最佳实践
55 2
|
2月前
|
图形学 开发工具 git
Unity与版本控制:游戏开发团队如何利用Git打造高效协作流程,实现代码管理的最佳实践指南
【8月更文挑战第31天】版本控制在软件开发中至关重要,尤其在Unity游戏开发中,能提升团队协作效率并避免错误。本文介绍如何在Unity项目中应用版本控制的最佳实践,包括选择Git、配置项目以排除不必要的文件、组织项目结构、避免冲突、规范提交信息以及使用分支管理开发流程,从而提高代码质量和团队协作效率。
158 1
|
5月前
|
开发工具 git 开发者
使用Git进行版本控制的最佳实践
【6月更文挑战第3天】使用Git进行版本控制的最佳实践包括:初始化配置Git仓库,设置个人信息和默认编辑器;提交信息要简洁明了,使用有意义的标题和描述;分支管理中,为新功能或修复创建分支,定期合并并保持主分支稳定;进行代码审查以保证质量;使用标签标记里程碑;忽略不必要的文件;定期备份仓库并学会恢复操作;不断学习和实践Git的高级用法。遵循这些实践可提升开发效率和代码质量。
|
6月前
|
存储 项目管理 开发工具
Git 版本控制:构建高效协作和开发流程的最佳实践
版本控制是软件开发的核心,促进团队协作与项目管理。通过制定明确的分支命名策略,遵循一致的代码提交规范,如指明提交类型和简短描述,增强了历史记录的可读性,可以清晰地组织和理解项目的结构与进展。
218 0
Git 版本控制:构建高效协作和开发流程的最佳实践
|
6月前
|
存储 开发工具 git
|
6月前
|
程序员 开发工具 git
【程序员英语 代码提交】C++工程师的代码提交艺术:git commit 时 精确表达与最佳实践
【程序员英语 代码提交】C++工程师的代码提交艺术:git commit 时 精确表达与最佳实践
174 1
|
开发工具 git
Git的正确使用姿势与最佳实践
本文介绍了在现代软件开发中使用Git的一些最佳实践,以帮助开发人员更好地掌握Git的正确使用方法。这些实践包括合理的分支管理策略、频繁提交和有意义的提交信息、定期拉取主分支并解决冲突、代码审查、使用标签进行版本控制、避免在主分支上直接提交代码、使用.gitignore文件、学会使用Rebase、备份和远程仓库、以及持续学习与实践。这些实践有助于提高团队的协作效率,同时也有助于保持项目的稳定性和可维护性。正确使用Git需要积累经验,不断学习和实践。
681 0
|
6月前
|
数据可视化 测试技术 持续交付
Git Flow规范在工作中的使用流程
Git Flow规范在工作中的使用流程
119 0