Git实战 | 让工作更高效,搞定Git的分支管理

news2024/9/21 12:07:44

上一篇讲到Git的分支管理实操,在线合并和本地合并都进行了实操。毕竟:光说不练是假把式。而只练不整理,只能是傻把式了。分支管理到底如何进行管理呢?

先以GitLab上的一张经典的图打头,作为一个总体概览,也方便理解分支的管理和走向:

图片

场景预设

现假设公司有名为Hogwarts_Online2的开发项目,其中包含了上线分支master,开发分支develop,测试分支release,和个人开发的特性分支

特性分支与develop分支

1.1)与远程仓库建立连接,在本地创建自己的分支,并拉取develop分支的文件:

图片

1.2)在当前分支中创建新的文件gitflowDemo.txt,输入内容“study git”;然后add,commit

#修改分支
vi gitflowDemo.txt
#提交修改
git add gitflowDemo.txt
git commit -m "add demo"

1.3) 通过git pull命令检查远程develop分支是否和当前分支有冲突:

$ git pull origin develop
From ssh://47.95.238.18:10022/root/hogwarts_online2
 * branch            develop    -> FETCH_HEAD
Already up to date.

注: push之前先拉去远程代码,以防在开发过程中,远程被别人更新过新版本代码。如有代码冲突,两人协商冲突解决办法。多人开发的时候,冲突是不可避免的。

1.4) git push将修改推至远程特性分支origin gitflowDemo:

图片

1.5) 在GitLab上进行merge request,并在develop分支上进行merge:

如果想要撤回这次merge可用git merge --abort

create merge request:

在这里插入图片描述

选择develop分支:

图片

没有冲突,可直接merge:

图片

最终我们可以看到成功merge进develop分支中:

图片

我们还可以在graph中查看分支的走向:

图片

这样,特性分支和develop分支的代码拉取与合并就完成了

另外,工作中develop分支可能是权限比较开放的,允许push的,这时候我们就可以在本地直接修改merge然后push到远程develop中

修改gitflowDemo.txt文件为

study git
update

add,commit,push

git add gitflowDemo.txt
git commit -m "update gitflowDemo.txt"
git push -u origin gitflowDemo

切换到本地develop分支,pull最新代码,merge本地gitflowDemo分支代码,push进远程develop分支

git checkout develop
git pull origin develop
git merge gitflowDemo
git push -u origin develop

这个是在GitLab上检查更新情况:

图片

图片

release分支

develop分支变动频繁,master分支属于上限版本,因此需要一个内测的分支版本,这个就是release分支了

具体的提交操作根据权限范围,和1中develop的操作一致。

hotfixes

有的时候出现的非常紧急的bug,需要立即修改上线,来不及在各个分支上进行merge测试了;这个就是就需要用hotfixes模式,建立一个bugfix分支,直接绕开其他分支,修改合并到master中。

注:这种未经测试就上线的情况很危险,本人就遇见过;之前驻场在华为里工作的时候,组内一位开发同事修改了一两行的代码,觉得不会有问题就直接跳过了我们测试,通过别人直接上线发布了,当时我所在的组是GNSS组;结果直接导致一千多万台手机的定位功能有失效的风险,受到了很多投诉,影响很大;最终相关开发人员被紧急停止休假,我们测试组也十一加了七天班,为了这个小小的改动付出了不小的后果~

3.1) 建立bugfix分支,并修改文件push到远程分支:

git checkout master
git checkout -b bug_02fix

vi bugfix02.txt
fix bug02

git commit -a -m "bug_01 fix"
git push -u origin bug_01fix

git add bugfix02.txt
git commit -m "fix bug02"
git push origin bug_02fix

3.2) 这个时候检查GitLab,会发现多了一条从master分支拉出来的修改bug02的分支:

图片

3.3)最后由最终的master权限拥有者来进行合并。

图片

3.4)修改了bug直接上线master后,很有可能让master分支的修改已经领先其他分支了;这个时候就需要将其他分支更新,对master分支进行合并;同时将bugfix分支删除,尽量保证分支的整洁度。

补充

git log

git log --graph --all --decorate=short
git grep "pattern"  $(git rev-list --all)
git log f13297

rebase

变基,合并分支后可以将分支走向的基准线变更,在分支很多的时候,可以简化分支的展示,合并分支走向使流程看起来简洁一点

git checkout feature
git rebase master

图片

与merge后的分支走向对比:

git checkout feature
git merge master
#或者写在一行
git merge feature master

图片

此外,rebase还可以对提交的历史进行修改(不常用也不建议使用)

git rebase -i HEAD~2

注意: rebase的使用规则

1、不要在公用的分支上执行rebase

2、主要的分支进行保护

git diff

git diff
git diff HEAD~3
git diff master develop

常见diff工具:

diff ——仅展示某一行的增加(+)或减少(-)

vimdiff ——比diff看起来要更直接

IDE ——强大的工具,展示清晰,使用方便

vimdiff bugfix01.txt bugfix02.txt

在这里插入图片描述

参考链接:

git的基本使用流程:

https://www.atlassian.com/git/tutorials/setting-up-a-repository

特性分支工作流:

https://www.atlassian.com/git/tutorials/comparing-workflows/feature-branch-workflow

gitlab工作流:

https://docs.gitlab.com/ee/workflow/gitlab_flow.html

多种工作流对比:

https://www.atlassian.com/git/tutorials/comparing-workflows

gitlab私服搭建:

https://docs.gitlab.com/omnibus/docker/


资源分享

下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/69486.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

汇编语言程序设计期末复习

汇编期末复习 第一章 汇编语言基础知识 机器指令:cpu能直接识别并遵照执行的指令,用二进制编码表示,由操作码,操作数组成,编码只含二进制0或1 机器语言:用二进制编码组成的机器指令的集合和一组使用机器…

java swing(GUI) MySQL实现的视频播放器系统源码+运行教程

今天给大家演示一下由Java swing实现的一款简单的多媒体播放器,项目源码我会放在我的网站上,并配有视频配置教程,保证运行起来的。这个小播放器实现了视频、音频文件的播放、暂停、快进、快退、停止、全屏等功能,还有历史记录功能…

Nacos学习

Nacos NacosNacosNacos 简介核心特性:Nacos 启动启动运行(windows)standalone(单节点)cluster模式Nacos Server 的配置数据是存在哪里呢?测试demo项目结构统一配置中心命名空间、分组、文件新建bootstrap.properties文件依赖contr…

字符串相似及匹配 Jaro-Winkler

前言 String str1 "明天吃红烧肉"; String str2 "明天中午吃红烧肉"; String str3 "明天吃红烧肉?"; String str4 "吃红烧肉";用普通的相等判断,只能得到是或否,但如果你在实际的业务需求中&am…

【中国信通院|低代码·无代码应用沙龙】低代码平台在云智慧的实践探索

从2014年 Forrester Research 首次提出“低代码开发平台(LCAP)”这一概念开始,低代码行业便备受关注。随着 SaaS 场景的加持,aPaaS 场景也被孵化了出来。与此同时,随着近两年 Outsystems 的快速发展,让其成…

猜数字-第11届蓝桥杯Scratch选拔赛真题精选

[导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第97讲。 蓝桥杯选拔赛每一届都要举行4~5次,和省赛、国赛相比,题目要简单不少,再加上篇幅有限,因此我精挑细选…

【Unity】Entities 1.0 学习(二):调试工具

在 Entites 1.0 ,Unity修改了之前的调试面板,以及在场景下构建 Ecs World 的流程,较之前的版本差别还是蛮大的。 之前的学习大多集中在代码和语法,很多是对之前成熟的代码做升级改造,所以没有用到新的调试工具。但是最…

Java以Graph方式发送Outlook、Exchange邮件(2022新版)

目录 问题提出 问解决题 注意 1、注册应用程序 2、引入需要依赖jar包——重点 3、微软管理员授予应用合适权限 参考链接 问题提出 在2022年10月份,微软公司出于安全考虑,陆续取消了Exchange邮件发送的Basic认证。通俗来说就是不能再用用户名密码…

ModuleNotFoundError: No module named ‘System‘解决办法

本人在做python和halcon接口的时候发现程序需要System库&#xff0c;报下面的错误 Traceback (most recent call last): File "D:/Project/pyhalcon/pcbhalcon.py", line 2, in <module> import System ModuleNotFoundError: No module named System Process …

APP隐私合规现状与防范措施

背景 2021年11月1《个人信息保护法》正式施行&#xff0c;标志信息保护进入强监管时代&#xff0c;APP监管被提升到前所未有的高度&#xff0c;数据安全、用户隐私、甚至功能体验等各个方面都出台了相应的规则规范&#xff0c;监管的初衷是&#xff1a;从各个层面保障用户的权…

Stimulsoft Reports.JAVA 2022.4.5 Crack

Stimulsoft Reports.JAVA Java 报表工具 Stimulsoft Reports.JAVA 是一种报告工具&#xff0c;用于在您的 Java 应用程序中进行业务报告的交互和工作。它包含 Java 和 HTML5 组件&#xff0c;允许您在不同平台、不同操作系统和不同硬件上使用创建的程序。因此&#xff0c;我们的…

树上的小兔子,藏了服务的新逻辑

【潮汐商业评论/原创】 自从一连三日委托会务组组织会议&#xff0c;Shirley在雅琳那收获了一个熟悉的称呼&#xff1a;雪梨&#xff0c;这是Shirley在部门内的“代号”&#xff0c;在过去独属于她最亲密的几位同事。 熟悉的称呼让她们感觉既轻松又亲近。然而&#xff0c;跳出…

虹科分享 | 加密U盘 | 何时使用USB驱动器进行备份(何时不用)

在存档或备份数字资产或数据时&#xff0c;有多种选择。虽然每个公司的需求和要求各不相同&#xff0c;但没有一种放之四海而皆准的方法或解决方案。在这里&#xff0c;我们将看看USB驱动器的优点和陷阱&#xff0c;USB驱动器是专业人士和个人用于存档和备份的最常见存储选项。…

2023最新SSM计算机毕业设计选题大全(附源码+LW)之java特殊教育学校学生管理系统002k1

要开始我们毕业设计的第一步的关键就是选好我们的课题&#xff0c;有的同学开始选题的时候想着按照传统的课题延续下去&#xff0c;在设计题目时&#xff0c;不要过于笼统广泛&#xff0c;选择题目其实并不难&#xff0c;要多从自身的角度出发&#xff0c;要结合你们当前所处的…

20221207比对python和C的运行效率(以六元一次方程组为例)【大概300倍】

20221207比对python和C的运行效率&#xff08;以六元一次方程组为例&#xff09; 2022/12/7 17:30 C:\20221207比对python和C的运行效率&#xff08;以六元一次方程组为例&#xff09;\1000-1000-1000-1000-1000-1000 &#xff08;只跑一次&#xff09; Python源码&#xff1a…

【web前端期末大作业】基于html关爱空巢老人网页设计与实现

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

程序设计基础最后一次作业——解析

文章目录打开项目文件完成题目initialize函数从文件info.txt中读入人员信息数据PrintAllSearchbyNameInsertSendMessage问题为什么txt打开是乱码打开项目文件 解压文件列表如下&#xff0c;每一个框是一组&#xff0c;.h后缀的文件是对应cpp文件的头文件&#xff0c;声明了相关…

理解路由表 实验报告

实验名称&#xff1a; 理解路由表 一、实验预习 1、实验目的 利用route命令查看、增加、删除等主机路由信息&#xff0c;以进一步熟悉和理解路由表。 实验内容&#xff08;包括自己设计增加的内容等&#xff09; 利用route命令查看、增加、…

制造业数据安全如何保证?天翎知识文档管理系统+群晖NAS企业级解决方案

编者按&#xff1a;本文分析了制造业文档管理中的需求&#xff0c;并进一步指出天翎知识文档管理系统群晖NAS企业级解决方案是如何满足企业需求&#xff0c;为企业赋能创新的。 关键词&#xff1a;免安装维护&#xff0c;流程审批&#xff0c;私有化部署&#xff0c;安全技术&…

基于人工蜂群算法的新型概率密度模型的无人机路径规划(Matlab代码实现)

目录 1 概述 1.1研究背景 2 运行结果 3 Matlab代码实现 4 结语 5 参考文献 1 概述 文章提出一种基于人工蜂群算法的非确定性双向规划机制搜索算法。首先针对不同场景&#xff0c;采用两种方法进行环境建模&#xff1b;其次&#xff0c;结合非确定性搜索机制引入双向规划方…