刚进公司,不懂Git工作流的我瑟瑟发抖

article/2025/8/20 1:36:25

前言

不懂git工作流,被辞退了!

之前在看到这句话的时候,我刚实习入职不久,瑟瑟发抖。好巧不巧,今天又看到了类似的文章讲git重要性的。

image-20220118135322392

眼下,学校导师安排给我的课题组了一个新的工程项目,使用gitee维护,因此我打算写一篇文章总结一下git的工作流(git工作流就是指单人/多人团队如何使用git命令配合维护一个项目的一些约定的流程,在确保有效迭代的同时,保持高效的协作方式),相信可以帮助那些使用git停留在单人维护远程master分支的同学更进一步。

image-20220118113156944

下面会讲解四种git工作流中的前两种,无论是在校课题组还是公司内部,都可以以此为基础找到合适的git团队工作模式。

Centralized Workflow 集中式工作流

介绍

image-20220118120940091

三个开发人员共同维护一份远程仓库的代码,工作方式如下:

  1. 每次工作前从remote拉取master分支到本地的master分支,然后处理冲突(使用IDE自带的GUI图形用户界面处理冲突会比较方便,如图中的goland内置的git工具)

    image-20220118121723074

  2. 接着开始编码,编码完成后add修改的文件到缓冲区

  3. commit缓冲区文件到自己local仓库,并且push本地仓库文件到remote仓库

评价

集中式工作流:这种工作方式简单粗暴,所有人只使用master分支维护项目,master永远是项目最新版本,编码比较快,立竿见影。但是所有开发者提交日志集中在一起呈单线延伸,难以定位问题,分工不明确,且容易发生冲突,处理冲突成本上升,但是单人开发很便利。

Feature Branch Workflow 功能分支工作流

介绍

image-20220118164211461

功能分支工作流以集中式工作流为基础,在维护master分支的基础上,将项目的开发工作拆分为添加一个个的feature的形式,工作方式如下:

  1. 一旦需要开发新的功能,就在remotemaster分支的基础上创建一个feature xxx分支

  2. 本地创建对应的feature xxx分支

  3. 每次开发前将remote库feature xxx分支拉取到本地,处理冲突

  4. 然后在本地feature xxx分支上开发,然后push到remote的feature xxx分支

  5. 在项目主页上发起pull request(如果是gitlab则是merge request,作用相同),本意是提出将feature xxx分支合并入master分支的请求

    image-20220118163039576

  6. 然后你的代码会被review,没通过就本地改,改完之后继续pushremote(两头都在feature xxx分支),然后负责人继续review你这个PR或者MR,通过之后会将feature xxx分支区别于master的改动合并入master,删除remote的feature xxx分支,代表这个功能开发完毕

评价

功能分支工作流:这种工作方式带来了code review的功能,使得推送的代码更符合规范,减少bug产生。并且因为主要还是在master分支基础上根据功能需求创建feature分支,使得开发工作十分灵活,且各个功能之间隔离,但是对于大型项目而言需要为不同分支分配更加具体的角色,只有feature分支是不够的

Gitflow Workflow

介绍

image-20220118190551888

Gitflow工作流是我目前尚在熟悉的一种工作流,也是目前非常成熟的git工作流方案。区别于功能分支工作流,Gitflow工作流划分分支更有约束性。主要包括:

  1. 主分支master:用于跟踪项目正式发布的版本(tag标签号)
  2. 开发分支dev:用于跟踪代码研发的提交历史
  3. 功能研发分支feature:每次有新的功能需要研发,以dev分支为基础,建立feature分支,开发完成后按上面feature branch工作流的方式提交PR/MR到remote的dev分支,完成之后删除对应feature分支
  4. 热修复分支hotfix:如上图所示,master分支出现bug(线上报bug了),需要马上从master拉取一个hotfix分支处理修复bug,并且将代码合并到master和dev(这两个分支需要保持bug修复的一致性),修复后给master当前提交打一个tag(v0.2)
  5. 发布分支release:在dev基础上建立release分支,处理一些问题、修复一些bug之后,将代码合并入master与dev,并给master打上tag(v1.0)表示发布完成

评价

约束性更强,发布迭代流程更规范,严谨,开发人员分工更明确,十分推荐学习使用。

Forking Workflow

介绍

image-20220118201450505

这种工作流是开源项目维护的工作流,暂作了解即可,通过将他人的项目fork到自己的remote仓库,就可以将其作为自己拥有的一份副本进行开发,比如想增加一个功能或者修复一个bug。这里A与C都fork了B的仓库,在各自开发完成新功能之后可以提交PR给B仓库,B仓库的开发者负责review代码,并接受PR。

评价

具体还未尝试过提交PR给开源项目,但是相信在掌握了上述三个git工作流之后,以后要使用到forking工作流的问题也应该引刃而解。

结束

学习了四种git工作流之后,并不是要完全照搬某一个模式的所有使用流程,而是应该结合实际的项目规模和人员规模进行合理安排。比如对于校内课题组较小的项目我认为feature branch工作流应该足以胜任,或者使用只有masterdevfeature的简化版Gitflow工作流

我是白泽,一个有点逗比的程序员/学生党,咱们下期见。

欢迎大家关注公众号【程序员白泽】。

传送门

刚建了个微信小群,欢迎一起交流学习,备战秋招。

传送门


http://chatgpt.dhexx.cn/article/9iglcpOQ.shtml

相关文章

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

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

面试 之 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 “火”得实至名归、前端框架依旧是“三巨头”

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