团队Git实践方案-Git工作流

article/2025/8/20 1:34:41

在团队协作中,好好地应用 Git可以为团队开发带来更高的效率收益, 也能保证整个工作流的完整推进。本文通过参考多篇优秀的Git实践文章总结而成,旨在为使用GIT标准分支开发流程的开发团队新人提供一份参考指南

一、一些好的习惯

1.1 提交

  • 提交时的粒度是一个小功能点或者一个 bug fix,这样进行恢复等的操作时能够将「误伤」减到最低;
  • 不要每提交一次就推送一次
  • 用一句简练的话写在第一行,然后空一行稍微详细阐述该提交所增加或修改的地方

1.2 推送

  • 当自己一个人进行开发时,在功能完成之前不要急着创建远程分支。

1.3 合并

  • 在将其他分支的代码合并到当前分支时,如果那个分支是当前分支的父分支,为了保持图表的可读性和可追踪性,可以考虑用git rebase来代替git merge;反过来或者不是父子关系的两个分支以及互相已经git merge过的分支,就不要采用git rebase了,避免出现重复的冲突和提交节点。

二、常用操作命令简介

常用命令如下:

# 提交
git commit
# 添加跟踪
git add [--all]
# 推送
git push
# 拉取
git pull
# 分支操作
git branch [-d]
# 合并
git merge
# ”挑拣”提交
git cherry-pick
# 检出分支
git checkout [-b] BRANCH_NAME
# 暂存
git stash
  • 更多命令参考: Git常用命令详解

三、分支管理

说到分支管理,就需要知道Git Flow分支模型,它定义了Git分支的一个规范,参照这个模型,可以应用于大部分工程场景

  • Git Flow 分支模型:能够应对 99% 的场景,剩下的那 1% 留给几乎不存在的极度变态的场景。
    • 注意:它只是一个模型,而不是一个工具;你可以用工具去应用这个模型,也可以用最朴实的命令行。所以,重要的是理解概念,不要执着于实行的手段。
  • 简单说来,Git Flow 就是给原本普普通通的分支赋予了不同的「职责」:

  • 项目中长期存在的两个分支(主要分支)

    • master:主分支,负责记录上线版本的迭代,该分支代码与线上代码是完全一致的。
    • develop:开发分支,该分支记录相对稳定的版本,所有的feature分支和bugfix分支都从该分支创建。
  • 其它分支为短期分支,其完成功能开发之后需要删除(派生分支

    • feature/*:特性(功能)分支,用于开发新的功能,不同的功能创建不同的功能分支,功能分支开发完成并自测通过之后,需要合并到 develop 分支,之后删除该分支。
    • bugfix/*:bug修复分支,用于修复不紧急的bug,普通bug均需要创建bugfix分支开发,开发完成自测没问题后合并到 develop 分支后,删除该分支。
    • release/*:发布分支,用于代码上线准备,该分支从develop分支创建,创建之后由测试同学发布到测试环境进行测试,测试过程中发现bug需要开发人员在该release分支上进行bug修复,所有bug修复完后,在上线之前,需要合并该release分支到master分支和develop分支。
    • hotfix/*:紧急bug修复分支,该分支只有在紧急情况下使用,从master分支创建,用于紧急修复线上bug,修复完成后,需要合并该分支到master分支以便上线,同时需要再合并到develop分
  • 主要分支每种类型只能有一个,派生分支每个类型可以同时存在多个

3.1 工具

好的工具可以方便开发操作,这里推荐SourceTree,它有一个创建Git Flow工具流选项,可以快速在工程中创建对应分支并管理。当然,也可以走命令行路线来创建Git Flow,参考文章: 研发团队GIT开发流程
下载地址: 注意安装过程可能需要科学上网
在这里插入图片描述

3.2 工具与实践

按下command ,ctrl ,调出「Preferences」界面并切换到「Git」标签,勾选「Use rebase instead of merge by default for tracked branches」([对提交分支默认使用变基代替合并])和「Do not fast-forward when merging, always create commit」(【合并时不要使用快进方式,总是创建提交】)

在这里插入图片描述

  • 这样设置之后,在点「Pull」按钮拉取代码时会自动执行git pull --rebase;并且,每次合并时会自动创建新的包含分支信息的提交节点。
  • 接下来,点击工具栏中的「Git Flow」按钮将相关的流程自动化。如果没有特殊需求,直接按下对话框中的「确定」。初始化完成后会自动切换到 develop 分支。
  • 分支权限设置: 对于master 和 develop 分支,需要进行保护,只有项目负责人有权推送和删除。

3.3 开发功能

  1. 在确定发布日期之后,将需要完成的内容细分一下分配出去,负责某个功能的开发人员利用 SourceTree 所提供的 Git Flow 工具创建一个对应的 feature 分支。如果是多人配合的话,创建分支并做一些初始化工作之后就推送创建远程分支;否则,直到功能开发完毕要合并进 develop 前,不要创建远程分支。

  2. 功能开发完并自测之后,先切换到 develop 分支将最新的代码拉取下来,再切换回自己负责的 feature 分支把 develop 分支的代码合并进来。合并方式参照上文中的「合并」,如果有冲突则自己和配合的人一起解决。

  3. 然后,到 GitLab 上的项目首页创建合并请求(merge request)。
    在这里插入图片描述

  4. 「来源分支」选择要被合并的 feature 分支且「目标分支」选择 develop 分支后点击「比较分支」按钮,在出现的表单中将处理人指派为项目负责人。

  5. 项目负责人在收到合并请求时,应该先做下代码审核(Code Review)看看有没有明显的严重的错误;有问题就找负责开发的人去修改,没有就接受请求并删除对应的 feature 分支。

3.4 测试功能

负责测试的人创建一个 release 分支部署到测试环境进行测试;若发现了 bug,相应的开发人员就在 release 分支上或者基于 release 分支创建一个分支进行修复。

3.5 发布上线

当确保某次发布的功能可以发布时,负责发布的人将 release 分支合并进 master 和 develop 并打上 tag,然后打包发布到线上环境。

建议打 tag 时在信息中详细描述这次发布的内容,如:添加了哪些功能,修复了什么问题。

3.6 修复问题

当发现线上环境的代码有小问题或者做些文案修改时,相关开发人员就在本地创建 hotfix 分支进行修改,具体操作参考「开发功能」。

如果是相当严重的问题,可能就得回滚到上一个 tag 的版本了。

补充

关于分支的命名:除了主要分支的名字是固定的之外,派生分支是需要自己命名的,这里就要有个命名规范了。强烈推荐用如下形式:

•feature——按照功能点(而不是需求)命名;

•release——用发布时间命名,可以加上适当的前缀;

•hotfix——GitLab 的 issue 编号或 bug 性质等。

参考文章: 团队开发中的Git实践,研发团队Git开发流程


http://chatgpt.dhexx.cn/article/2BppicPG.shtml

相关文章

面试 之 git工作流

目录: 一、git工作流 一、git工作流 1、git 版本管理基本概念 remote远程仓库 repository本地仓库 index索引区 index是新commit的写照;git add已经将数据传递到本地仓库了,在index中有个指向blob对象的索引记录;因此&#…

git工作流学习记录

git工作流学习地址 https://git-scm.com/book/zh/v1/Git-分支-分支的新建与合并 git多人参与开发项目时,需要用到git的工作流 一、创建好仓库 第一个分支是master,这个分支就作为项目最稳定的分支存在 然后是开发分支dev,这个分支是开发过…

用手画了11张图终于搞明白了Git工作流,我怀疑你用的是假 Git

号外号外!《死磕 Java 并发编程》系列连载中,大家可以关注一波: 「死磕 Java 并发编程05」阿里面试失败后,一气之下我图解了Java中18把锁 「死磕 Java 并发编程04」说说Java Atomic 原子类的实现原理 「死磕 Java 并发编程03」…

Git工作流(分支管理规范)

原文链接:https://nvie.com/posts/a-successful-git-branching-model/ Note of reflection (March 5, 2020) 反思记录(2020 年 3 月 5 日) This model was conceived in 2010, now more than 10 years ago, and not very long after Git itself came int…

Git工作流规范

Git基本原理及命令使用 Git简明教程 Git工作流使用方式选择 微型项目,使用集中式工作流。小型项目,功能分支工作流。中大型的互联网项目,不断需求迭代,一个版本接一个版本,参考并使用如下Git工作流。 Git工作流使用…

给大家推荐一套 git 工作流

一套规范的git工作流能让每个开发者都有自己的本地的完整项目副本。隔离的环境使得每个开发都的工作独立于项目的其它修改。 —— 他们可以在自己的本地仓库中添加提交,完全无视上游的开发,直到需要的时候。 一、分支划分及作用 master —— 主分支&…

Git工作流指南

说明: 个人在学习Git工作流的过程中,从原有的 SVN 模式很难完全理解Git的协作模式,直到有一天我看到了下面的文章,好多遗留在心中的困惑迎刃而解: 我们以使用SVN的工作流来使用Git有什么不妥?Git方便的bra…

《Git 系列》Git 工作流,你知道几种?

前言 Git 可能是对我们日常开发影响最大的软件了。 我们使用 Git,肯定要采用某个工作流来作为我们的开发流程。 不同的开发流程,有不同的适用场景, 没有银弹! Workflow - 工作流 Git flowGitHub flowTrunk-based development…

git的各种工作流

Git工作流可以理解为团队成员遵守的一种代码管理方案,在Git中有以下几种常见工作流: 集中式工作流功能开发工作流Gitflow工作流Forking工作流 1)集中式工作流 这种工作方式跟svn类似,它只有一个master分支,开发者会…

Git工作流(随笔)

目录 前言 一、工作流概述 1、概念 2、分类 二、集中式工作流 1、概述 2、介绍 3、操作过程 三、功能分支工作流 1、概述 2、介绍 3、操作过程 1)创建远程分支 2)删除远程分支 四、GitFlow工作流 1、概述 2、介绍 3、操作过程 五、Forki…

git工作流

目录 一、什么是gitFlow工作流二、操作1.(Feature branches)功能分支1.1创建功能分支1.2完成功能分支 2.(Release branches)发布分支3.(Hotfix branches)修复分支 三、例子1、创建develop分支2、张三和罗翔…

Flask+Vue+ElementUI开源框架推荐

项目介绍 一款 Python 语言基于Flask、Vue2.x、ElementUI、MySQL等框架精心打造的一款高性能的前后端分离架构敏捷开发框架,可快速搭建前后端分离后台管理系统,本着简化开发、提升开发效率的初衷,框架自研了一套个性化的图片上传组件&#x…

实用 | 整理了 34 个最火的 Python 开源框架

点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达本文转自|视觉算法 我们从近 10000 个 Python 开源框架中评价整理的 34 个最为好用的开源框架,它们细分可以分为 Python Toolkit、Web、Terminal、Code Edito…

Python开源框架简介

前言 今天给大家带来了12个在GitHub等开源网站中最受欢迎的Python开源框架。如果你正在学习python,那么这12个开源框架,千万别错过,这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试&…

推荐 6 个 yyds 的开源 Python Web 框架

提到 Python 的 Web 框架,第一反应就是老三样,Django,Flask 和 Tornado。如果按流行度来排名的话,应该也是这个顺序。 但是今天重点介绍的框架是FastAPI,现在很多公司招聘的要求都需要会这个框架,非常值得…

22个受欢迎的Python不同类型开源框架

阅读网站源代码需要一定的编程基础,但有一些通用步骤可以帮助你理解: 了解编程语言:你需要了解网站源代码使用的编程语言,比如HTML、钢性铸铁和java描述语言。使用开发者工具:你可以使用浏览器 的开发者工具来查看网站…

最受欢迎 Top 12 Python 开源框架,你都用过吗?| 原力计划

作者 | 学Python的阿勇 责编 | 夕颜 出品 | CSDN博客 今天给大家带来了12个在GitHub等开源网站中最受欢迎的Python开源框架。如果你正在学习python,那么这12个开源框架,千万别错过,这些框架包括事件I/O,OLAP,Web开发&a…

python开源web项目-15个最受欢迎的Python开源框架(转载)

一、Django: Python Web应用开发框架 Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的软件设计模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的, 即是CMS(内容管理系统)软件。并于2005年7月在B…

2022 全栈开发报告:Python “火”得实至名归、前端框架依旧是“三巨头”

随着科技行业的日新月异,许多企业对于全栈开发人员的需求持续高涨——全栈开发人员好比“全能选手”,具备解决软件开发过程中各个层面的各种问题的能力:既能开发客户端应用,也能搞服务器端应用,甚至产品设计也是他们来…

最受欢迎的Python开源框架有哪些?

导读今年年初,有一件科学界的大事儿曾刷爆朋友圈:引力波的发现。这是LIGO首次直接探测到引力波和首次观测到双黑洞碰撞与并合,探测到的引力波是由13亿光年之外的两颗黑洞在合并的最后阶段产生的,经过13亿光年的时空旅行,最后被美国的“激光干涉引力波天文台”(LIGO)的两台…