当前位置: 首页 > news >正文

Gitflow基础知识

0.理想状态

现状

听完后的理想状态

没使用过 git

知道 git 是什么,会用 git 基础流程命令

用过 git,但只通过图形化界面操作

脱离图形化界面操作,通过 git 命令操作

会 git 命令

掌握 gitflow 规范,合理使用 rebase 和解决代码冲突问题


1.Git 的基础流程&命令


1.1 基础概念
工作区:代码生产基地,pycharm、vscode
暂存区:暂时存放修改/创建/删除的文件,工作区和本地仓库之间的中间商,最终目的:建立 git 索引,可以让 git 追踪文件
本地仓库:存储项目历史记录的地方,包含了项目的完整版本历史,包括所有提交的快照、分支、标签等
远程仓库:github、gitlab 等团队共享代码的中心存储库

1.2 基础流程

无标题-2023-06-27-1207 (1).png



比拟理解 git 基础流程

无标题-2023-06-27-2145.png



git 命令流程

# 修改/增加/删除文件....# 查看工作区状态
git status# 提交到暂存区
git add .
git add test.txt# 提交到本地仓库
git commit -m "提交信息"


查看工作区状态


未追踪和已追踪的区别


已追踪的文件:在之前的提交中已存在或已通过git add命令添加到过暂存区的文件
未追踪的文件:一般就是新建的文件或者改名了的文件,还没有执行过git add的文件,所有 git 操作对未追踪文件均无效


提交至暂存区:

image.png



提交至本地仓库:

image.png



1.3 回滚操作


分三种场景:


1、工作区回滚
2、暂存区回滚
3、本地仓库回滚



工作区回滚:

git checkout .
git checkout test.txt
git checkout -- test.txt

会抛弃已有修改


暂存区回滚到工作区

git reset HEAD

image.png



本地仓库回滚暂存区:

image.png



本地仓库回滚工作区:

git reset --mixed HEAD~
git reset HEAD~
git reset --mixed HEAD~1
git reset --mixed $commit_id

image.png



~ 的含义


●  ~ 表示 HEAD 的父提交
●  HEAD~ 和 HEAD~1 等价
●  ~2表示 HEAD 的父提交的父提交,表示上上个提交


删除所有提交内容(慎用)


commit 信息和工作区内容都会被删除

image.png

image.png



1.4 切换分支

# 切换分支
git checkout 分支# 创建分支
git branch
git checkout -b 分支



2.单分支模型


2.1 适用场景
个人佛系项目


2.2 基础流程
直接在 master 分支上开发

# 1. 拉取代码
git pull# 2. 进行开发
...# 3. 提交代码
git add .
git commmit -m "update"
git push



3.双分支模型


3.1 适用
        ●  生产/开发模型,一般分:master、devlop
        ●  个人规范项目,团队佛系项目
        ●  特性:master 分支只用作发布,devlop 用于开发

2.2 单人基础流程

# 1. master 拉取最新代码
git checkout master
git pull# 2. 新版本开发,基于 master 拉 devlop 分支
git checkout -b devlop# 3. 开发
...# 4. 提交代码
git add .
git commmit -m "update"
git push# 5. 合并代码
git rebase master
git checkout master
git merge devlop


2.3 多人基础流程

# 1. master 拉取最新代码
git checkout master
git pull# 2. 新版本开发,同学A、B 基于 master 拉 devlop 分支
git checkout -b devlop# 同学 A 开发
git checkout devlop
...# 同学A提交代码
git add .
git commmit -m "update"
git push# 同学 B 开发
git checkout devlop
...# 同学 B 提交代码
git add .
git commmit -m "update"
git push# 5. 合并代码
git rebase master
git checkout master
git merge devlop


4.标准 gitflow


4.1 gitflow 流程&基础教程
 

https://nvie.com/posts/a-successful-git-branching-model/

https://backlog.com/git-tutorial/cn/stepup/stepup2_8.html


4.2 分支规范

分支名

性质

说明

操作对象

master

永久

- 要保持与线上内容的强一致性,即任何变化都要触发线上部署

- 只接受 hotfix 和 release 的 MR

junjie

develop

永久

- 保存当前最新开发成果的分支 - 只接受 feature 的 PR,只能合并到 release - release 和 master 有变动时要及时 rebase 同步变化

所有开发同学

release-xxx

临时/永久

- 测试验收、灰度用的分支,必须保证功能完整性与一定的稳定性

- 只接受 develop 的 PR

- 只能从 develop 切,-只能合并到 master -

master 有变动时要及时 rebase 同步变化

junjie

feature-xxx

临时

- 提测前开发功能用的分支,理论上一个功能对应一个分支 - 只能从 develop 切,只能合并到 develop

所有开发同学

hotfix/xxx

临时

- 紧急修复线上 bug 的分支 -

只能从 master 切,只能合并到 master -

该分支可以手动部署到任意环境进行验证

所有开发同学

无标题-2023-06-26-2022.png


 

git checkout -b release-2023.3.p.5.18
# edit package.json, etc.
git commit -a -m "fix: bump release version to 2023.4.0"
git tag v2023.518.0
git push origin release-2023.3.p.5.18
git push --tag
# optionally trigger version publish immediately
git commit --allow-empty -m "fix: release version trigger"
git push origin release-2023.3.p.5.18

 

相关文章:

Gitflow基础知识

0.理想状态 现状 听完后的理想状态 没使用过 git 知道 git 是什么,会用 git 基础流程命令 用过 git,但只通过图形化界面操作 脱离图形化界面操作,通过 git 命令操作 会 git 命令 掌握 gitflow 规范,合理使用 rebase 和解决…...

NLP基础及其代码-tokenizer

基础知识 NLP-分词器:SentencePiece【参考Chinese-LLaMA-Alpaca在通用中文语料上训练的20K中文词表并与原版LLaMA模型的32K词表进行合并的代码】_sentencepiece 中文训练-CSDN博客 【OpenLLM 008】大模型基础组件之分词器-万字长文全面解读LLM中的分词算法与分词器…...

OpenCV结构分析与形状描述符(8)点集凸包计算函数convexHull()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 查找一个点集的凸包。 函数 cv::convexHull 使用斯克拉斯基算法(Sklansky’s algorithm)来查找一个二维点集的凸包&#…...

灰光模块,彩光模块-介绍

1. 引用 知识分享系列一:5G基础知识-CSDN博客 5G前传的最新进展-CSDN博客 灰光和彩光_通信行业5G招标系列点评之二:一文读懂5G前传-光纤、灰光、彩光、CWDM、LWDM、MWDM...-CSDN博客 ADOP带你了解:CWDM、DWDM、MWDM、LWDM:快速…...

python-新冠病毒

题目描述 假设我们掌握了特定时间段内特定城市的新冠病毒感染病例的信息。在排名 i 的当天有 i 个案例,即: 第一天有一例感染第二天有两例感染第三天有三例感染以此类推...... 请计算 n 天内的感染总数和每天平均感染数。 输入 整数 n 表示天数&…...

2023年408真题计算机网络篇

https://zhuanlan.zhihu.com/p/6954228062023年网络规划设计师上午真题解析TCP流量计算_哔哩哔哩_bilibili 1 1在下图所示的分组交换网络中,主机H1和H2通过路由器互联,2段链路的数据传输速率为100 Mb/s、时延带宽积 (即单向传播时延带宽&am…...

分类学习器(Classification Learner App)MATLAB

在MATLAB中,分类学习器用于构建和评估分类模型。MATLAB提供了一些工具和功能,帮助你进行分类任务,例如分类学习器应用程序、统计和机器学习工具箱中的函数等。 数据集介绍 不同的人被要求在平板电脑上写字母"J"、“V"和&quo…...

DolphinDB 基准性能测试工具:金融模拟数据生成模块合集

测试 DolphinDB 数据库性能时,往往需要快速写入一些测试数据。为方便用户快速完成简单的基准性能测试,金融 Mock 数据生成模块覆盖了常用的金融数据集,满足用户生成模拟数据的需求。基于本模块生成的模拟数据不具有实际意义,建议仅…...

BUUCTF—[BJDCTF2020]The mystery of ip

题解 打开环境点击上面的flag可以看到这个IP页面。 抓个包看看有啥东西无,可以看到在返回包有IP。 看到IP就想到X-Forwarded-For这个玩意,我们用X-Forwarded-For随便添加个IP看看。可以看到返回的IP内容变成了123。 X-Forwarded-For:123 推测它会输出我…...

leecode100题-双指针-三数之和

给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 答案中不可以包含重复的三元组。 示例 1: 输入…...

计算机毕业设计PySpark+Django考研分数线预测 考研院校推荐系统 考研推荐系统 考研爬虫 考研大数据 Hadoop 大数据毕设 机器学习 深度学习

《PySparkDjango考研分数线预测与推荐系统》开题报告 一、研究背景与意义 随着教育水平的提高和就业竞争的加剧,越来越多的学生选择继续深造,参加研究生入学考试(考研)。然而,考研信息繁杂,选择专业和院校…...

Go语言多态实践以及gin框架c.BindJSON序列化遇到的坑

遇到的问题 如果定义的接收结构体字段是interface{},在调用gin的 c.BindJSON 方法后会直接转为map, 导致无法断言为其他类型 场景 在创建工程请求中,根据工程类别的不同会有多种创建参数,比如 // A 类型需要编译 所以有这些字…...

SpringCloud神领物流学习笔记:项目概述(一)

SpringCloud神领物流学习笔记:项目概述(一) 文章目录 SpringCloud神领物流学习笔记:项目概述(一)1、项目介绍2、基本业务流程3、系统架构4、技术架构 1、项目介绍 ​ 神领物流是一个基于微服务架构体系的【…...

RocketMQ异步报错:No route info of this topic

在SpringBoot中发送RocketMQ异步消息的时候报错了,提示org.apache.rocketmq.client.exception.MQClientException: No route info of this topic, testTopic1 这里给出具体的解决方案 一、Broker模块不支持自动创建topic,并且topic没有被手动创建过 R…...

Node.js学习记录(一)

目录 一、文件读取 readFile 二、写入文件 writeFile 三、动态路径 __dirname:表示当前文件所处的目录、path.join 四、获取路径文件名 path.basename 五、提取某文件中的css、JS、html 六、http 七、启动创建web服务器 服务器响应 八、将资源请求的 url 地…...

【AI】Pytorch_模型构建

建议点赞收藏关注!持续更新至pytorch大部分内容更完。 本文已达到10w字,故按模块拆开,详见目录导航。 整体框架如下 数据及预处理 模型及其构建 损失函数及优化器 本节目录 模型线性回归逻辑回归LeNetAlexNet 构建模块组织复杂网络初始化网络…...

FFmpeg源码:avcodec_descriptor_get函数分析

一、avcodec_descriptor_get函数的声明 avcodec_descriptor_get函数声明在FFmpeg源码(本文演示用的FFmpeg源码版本为7.0.1)的头文件libavcodec/codec_desc.h中: /*** return descriptor for given codec ID or NULL if no descriptor exist…...

为数据仓库构建Zero-ETL无缝集成数据分析方案(下篇)

对于从事数据分析的小伙伴们来说,最头疼的莫过于数据处理的阶段。在我们将数据源的原始数据导入数据仓储进行分析之前,我们通常需要进行ETL流程对数据格式进行统一转换,这个流程需要分配专业数据工程师基于业务情况完成,整个过程十…...

ElMessageBox消息确认框组件在使用时如何设置第三个或多个自定义按钮

ElMessageBox自带两个按钮一个确认一个取消,当还想使用该组件还想再加个功能组件时,就需要自定义个按钮加到组件里 第二种方法可以通过编写自定义弹窗来完成,个人觉得代码量增多过于繁琐,当然也可以实现 先定义方法负责获取dom父节点,创建新的子元素加…...

javaWeb【day04】--(MavenSpringBootWeb入门)

01. Maven课程介绍 1.1 课程安排 学习完前端Web开发技术后,我们即将开始学习后端Web开发技术。做为一名Java开发工程师,后端Web开发技术是我们学习的重点。 1.2 初识Maven 1.2.1 什么是Maven Maven是Apache旗下的一个开源项目,是一款用于…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...

<6>-MySQL表的增删查改

目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表&#xf…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

【JavaEE】-- HTTP

1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

如何为服务器生成TLS证书

TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...