前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >带领前端小伙伴重温「Git Flow Workflow」

带领前端小伙伴重温「Git Flow Workflow」

原创
作者头像
拾贰
修改于 2019-08-22 09:49:34
修改于 2019-08-22 09:49:34
5901
举报
文章被收录于专栏:前端讲堂前端讲堂

前言

关于Git Flow 工作流,我想已经是老生常谈的话题了,但是今天我不得不来重温一下 Git Flow 工作流。当我看的代码厂库的时候,我已经开始怀疑人生。乱七八糟的分支,五花八门的提交信息,各种各样的分支名称,没有 Develop 分支,没有 Release,也没有 Hotfix。因此我想我应该好好温习一遍 Git Flow 工作流,来改善一下厂库现状。

0. Git 工作流

其实 Git 不只有 Git Flow Workflow 这一种工作流,还有 Fork WorkflowFeature Branch WorkflowDistributed Workflows 等。现在还有 Github Flow WorkflowGitlab Flow Workflow

1. Git Flow Workflow

Vincent Driessen 2010 年发布出来的他自己的分支管理模型。个人觉得 Git Flow Workflow 应该是最常用的 Git 工作流了,更多的介绍大家可以看看这个 Git Flow Workflow (看完这一篇感觉就不用再往下面看我写的这篇了,因为你已经重温了,嘿嘿)。

2. Git Flow 长期分支

  • master
  • develop

master:主分支,这个大家应该不陌生。代码库应该有一个、且仅有一个主分支;提供用户正式使用的版本,都在这个主分支上发布。

develop:开发分支,日常使用的开发分支。从 master 分支上面分出来的,一般功能开发完成后合并到主分支,并且用主分支进行发布。

代码语言:txt
AI代码解释
复制
# 创建 develop 分支
git checkout -b develop maste

# 切换到 master 分支
git checkout maste

# 对 develop 分支进行合并(使用 --no-ff 可以在 git 历史上清晰看见记录)
git merge --no-ff develop

3. Git Flow 短期分支

  • feature
  • hotfix
  • release feature:功能分支。也就是大家做需求、功能的时候的分支。从 develop 分支上面分出来的,一般功能完成后合并到 develop 分支,并且删除功能分支。命名方式一般为 feature/*feature-*
代码语言:txt
AI代码解释
复制
# 创建 feature/x 功能分支
git checkout -b feature/x develop

# 切换 develop 分支
git checkout develop

# 开发完成后,将功能分支 feature/x 合并到 develop 分支(使用 --no-ff 可以在 git 历史上清晰看见记录)
git merge --no-ff feature/x

# 合并完成删除 feature/x 功能分支
git branch -d feature/x

hotfix:修补 bug 分支/补丁分支。bug 这种东西大家都不陌生,hotfix 就是用来修补正式发布以后的 bug 的分支。从 master 分支上面分出来的,一般修复完成后合并到主分支以及开发分支,并且删除补丁分支,用主分支进行发布。命名方式一般为 hotfix/*hotfix-*

代码语言:txt
AI代码解释
复制
# 创建 hotfix/x 补丁分支
git checkout -b hotfix/x maste

# 切换到 master 分支
git checkout maste

# 修复完成后,将 hotfix/x 补丁分支合并到 master 分支(使用 --no-ff 可以在 git 历史上清晰看见记录)
git merge --no-ff hotfix/x

# 切换到 develop 分支
git checkout develop

# 将 hotfix/x 补丁分支合并到 master 分支
git merge --no-ff hotfix/x

# 对合并生成的新节点,做一个标签(后面重温 tag)
git tag -a 1.1

# 合并完成删除 hotfix/x 补丁分支
git branch -d hotfix/x

release:预发布分支。发布正式版本之前(开发完成 develop 分支合并到 master 分支之前),可能需要有一个预发布的版本进行测试。从 develop 分支上面分出来的,预发布结束以后,必须合并进 developmaster 分支。命名方式一般为 release/*release-*

代码语言:txt
AI代码解释
复制
# 创建 release/x 补丁分支
git checkout -b release/x develop

# 确认没问题后,切换到 master 分支
git checkout maste

# 修复完成后,将 release/x 补丁分支合并到 master 分支(使用 --no-ff 可以在 git 历史上清晰看见记录)
git merge --no-ff release/x

# 切换到 develop 分支
git checkout develop

# 将 hotfix/x 补丁分支合并到 master 分支
git merge --no-ff release/x

# 对合并生成的新节点,做一个标签(后面重温 tag)
git tag -a 1.2

# 合并完成删除 release/x 功能分支
git branch -d release/x

4. 关于 Tag

taggit 版本库的一个标记,指向某个 commit 的指针。主要用于发布版本的管理,一个版本发布之后,我们可以为 git打上 v.1.0.1v.1.0.2 ...这样的标签。版本代码被打上 tag 后就会被封存起来,以后就可以根据相应的 tag 找到对应的版本,防止版本代码丢失。

代码语言:txt
AI代码解释
复制
# 打一个 tag
git tag v1.0.1

我想大家看到这里,不仅又把 Git Flow 重温了一遍,一些基础的 Git 命令也重温了一遍。

5. Git 提交信息规范

这个其实也是需要大家注意的,写好 Git 提交信息并不难,就看大家是不是想去养成这么一个习惯。

格式:

代码语言:txt
AI代码解释
复制
<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>

Header(必需):包括三个字段:type(必需)、scope(可选)和 subject(必需)。

  type:用于说明 commit 的类别,只允许使用下面7个标识。

     feat:新功能(feature)

     fix:修补bug

     docs:文档(documentation)

     style: 格式(不影响代码运行的变动)

     refactor:重构(即不是新增功能,也不是修改bug的代码变动)

     test:增加测试

     chore:构建过程或辅助工具的变动

  scope:用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同。

  subject:用于 commit 目的的简短描述,不超过50个字符。

Body(可选):对本次 commit 的详细描述,可以分成多行。

示例:

代码语言:txt
AI代码解释
复制
More detailed explanatory text, if necessary.  Wrap it to
about 72 characters or so.

Further paragraphs come after blank lines.

- Bullet points are okay, too
- Use a hanging indent

注意:

  • 使用第一人称现在时,比如使用change而不是changed或changes。
  • 永远别忘了第2行是空行。
  • 应该说明代码变动的动机,以及与以前行为的对比。

Footer(可选):

  1. 如果当前代码与上一个版本不兼容,则 Footer 部分以 BREAKING CHANGE 开头,后面是对变动的描述、以及变动理由和迁移方法。

  2. 如果当前 commit 针对某个 issue,那么可以在 Footer 部分关闭这个 issue

  3. 如果当前 commit 用于撤销以前的 commit,则必须以revert:开头,后面跟着被撤销 Commit 的 Header。

情况一(示例):

代码语言:txt
AI代码解释
复制
BREAKING CHANGE: isolate scope bindings definition has changed.

    To migrate the code follow the example below:

    Before:

    scope: {
      myAttr: 'attribute',
    }

    After:

    scope: {
      myAttr: '@',
    }

    The removed `inject` wasn't generaly useful for directives so there should be no code using it.

情况二(示例):

代码语言:txt
AI代码解释
复制
Closes #234

情况三(示例):

代码语言:txt
AI代码解释
复制
revert: feat(pencil): add 'graphiteWidth' option

This reverts commit 667ecc1654a317a13331b17617d973392f415f02.

# Body部分的格式是固定的,必须写成This reverts commit &lt;hash>.,其中的hash是被撤销 commit 的 SHA 标识符。

拒绝拖延(感谢关注)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
1 条评论
热度
最新
这思路和大数相乘好像
这思路和大数相乘好像
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
Git 分支管理策略汇总
最近,团队新入职了一些小伙伴,在开发过程中,他们问我 Git 分支是如何管理的,以及应该怎么提交代码?
AlwaysBeta
2022/11/11
1.3K0
Git 分支管理策略汇总
Git 代码分支管理规范
Git 是优秀的分布式代码管理软件。但是俗话说,“无规矩不成方圆”,代码分支的管理规范没有制定好,就会带来一系列的问题,比如:
leon_橙
2020/03/02
13K0
Git 代码分支管理规范
Git 分支管理的 23 条军规
1 GIT,在技术层面上,绝对是一个无中心的分布式版本控制系统,但在管理层面上,我建议你保持一个中心版本库。
DevOps时代
2019/08/28
7150
Git 分支管理的 23 条军规
一个成功的Git分支模型
本文翻译自Vincent Driessen的:A successful Git branching model
云深i不知处
2022/10/05
7300
一个成功的Git分支模型
Git Workflow简介
Git Flow是构建在Git之上的一个组织软件开发活动的模型,是在Git之上构建的一项软件开发最佳实践。Git Flow是一套使用Git进行源代码管理时的一套行为规范和简化部分Git操作的工具。
mantou
2019/02/13
8160
Git Workflow简介
后端必备 Git 分支开发:规范指南
Git 是目前最流行的源代码管理工具。为规范开发,保持代码提交记录以及 git 分支结构清晰,方便后续维护,现规范 git 的相关操作。
搜云库技术团队
2020/08/07
1.2K0
后端必备 Git 分支开发:规范指南
GitFlow 实践命令
程序熵
2024/11/11
430
GitFlow 实践命令
您必须知道的 Git 分支开发规范,附 Git 常用命令大全!
我们都知道,阿里有 Java 规范,Redis 规范,而 Git 规范几乎从未被聊起,所以,今天我就说一说 Git 的日常分支开发规范。
业余草
2020/01/02
1.7K0
持续交付之基于Git Flow代码分支策略实践
高效的持续交付体系,必定需要一个合适的代码分支策略。采用不同的代码分支策略,意味着实施不同的代码集成与发布流程,这会影响整个研发团队每日的协作方式,因此研发团队通常需要很认真地选择自己的策略。
高楼Zee
2019/07/17
1.4K0
持续交付之基于Git Flow代码分支策略实践
git分支管理
命名: master、develop、feature以feature/功能名、release以release/功能名、hotfix以hotfix/bug名
OPice
2020/01/15
5320
Git 版本控制之 GitFlow
最近在着手制定开发规范,想要把项目正规高效的跑起来。计划引入 Git 版本控制,Git-Flow 便成为了首选。因为之前并没有过多接触,所以先花些时间摸索一下。
程序猿DD
2018/12/28
9620
Git Flow工作流和Git 版本控制最佳实践
Git Flow是一种流行的Git工作流程,它定义了一组规则和约定,用于管理Git仓库中的分支和版本。Git Flow包括两个长期分支(master和develop)和三个短期分支(feature、release和hotfix),每个分支都有自己的目的和生命周期。
Towserliu
2024/07/26
4991
Git Flow工作流和Git 版本控制最佳实践
基于 git flow + gitlab 协作开发:02 解决问题
上一篇文章中我们提到了在一个周维度或者月维度发布产品的小型协作项目中,会遇到各类协作上的问题,随着发布的越来越紧凑,问题也就越来越突出。本文主要对上一篇文章中提到的问题解决方案做细化,让大家可以清楚的知道如何通过合理的 git 工作流来解决这些问题,让原来发布时的手忙脚乱不再出现。通过 git flow 我们可以对项目做一个分支模型管理:
我与梦想有个约会
2021/03/13
1.1K0
使用 git-flow 自动化你的 git 工作流
上面的图看不懂没关系(我也不懂==),今天讲的是根据这个分支模型开发的 git-flow 命令行工具。只需要记住几个简单的命令,就能在工作中慢慢理解和应用这个分支模型~
savokiss
2019/11/25
9790
GitFlow 代码管理模型实战
Git Flow定义了一个项目发布的分支模型,为管理具有预定发布周期的大型项目提供了一个健壮的框架。
耕耘实录
2021/03/20
6160
Git flow 规范
VV采用标准的Git flow,下面将从工作流图与抽象模型两个方面,来描述与规范 Git flow。
jwangkun
2021/12/23
3.1K0
Git flow 规范
代码版本管理规范
git 流程模式有两种:一种是Git flow工作流,一种是Github flow工作流。
机械视角
2020/08/17
3K0
Git Flow 咀嚼:git flow 对应的git实现
Git Flow 代码示例 接触git flow也有很长一段时间了,中途偶尔用了一下,由于自己的手上的项目也不是大型项目,基本都是两三个人在做,master主要还是我自己,用git flow反而比较麻烦。也没有对这个原理进行深入理解。正好这段时间接手了一个项目,想试试git flow,然后就又了解了一下。git flow 的流程,可以用下面纯git命令来实现。 a. 创建develop分支 git branch develop git push -u origin develop b. 开
大数据工程师-公子
2019/03/14
4320
一文弄懂 Gitflow、Github flow、Gitlab flow 的工作流
协作必须有一个规范的工作流程,让大家有效地合作,使得项目井井有条地发展下去。”工作流程”在英语里,叫做”workflow”或者”flow”,原意是水流,比喻项目像水流那样,顺畅、自然地向前流动,不会发生冲击、对撞、甚至漩涡。
DevOps时代
2020/06/17
22.5K1
一文弄懂 Gitflow、Github flow、Gitlab flow 的工作流
你是如何玩Git分支模型的呢?
对于Git与其他集中式代码管理工具相比的优缺点的全面讨论,请参见这里。这样的争论总是喋喋不休。作为一个开发者,与现今的其他开发工具相比较,我更喜欢Git。Git真得改变了开发者对于合并和分支的思考。我曾经使用经典的CVS/Subversion,然而每次的合并/分支和其他行为总让人担惊受怕(“小心合并里的冲突,简直要命!”)。但是对于Git来说,这些行为非常简单和搞笑,它们被认为是日常工作中的核心部分。例如,在很多CVS/Subversion书里,分支与合并总是在后面的章节中被讨论(对于高级用户使用),然而在每个Git书中,在第3章就已经完全涵盖了(作为基础)。简单和重复的特性带来的结果是:分支与合并不再是什么可以害怕的东西。分支/合并被认为对于版本管理工具比其他功能更重要。关于工具,不再多说,让我们直接看开发模型吧。这个模型并不是如下模型:在管理软件开发进度方面,面对每个开发过程,每个队员必须按一定次序开发。
chengcheng222e
2021/11/04
5430
相关推荐
Git 分支管理策略汇总
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档