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

news2024/9/23 3:11:42

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

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

场景预设

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

特性分支与develop分支

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

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

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

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

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

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

$ 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 gitupdate
 

study git update

add,commit,push

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

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

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

git checkout developgit pull origin developgit merge gitflowDemogit push -u origin 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 mastergit checkout -b bug_02fix
vi bugfix02.txtfix bug02
git commit -a -m "bug_01 fix"git push -u origin bug_01fix
git add bugfix02.txtgit commit -m "fix bug02"git push origin bug_02fix
 

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=shortgit grep "pattern"  $(git rev-list --all)git log f13297
 

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

rebase

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

git checkout featuregit rebase master
 

git checkout feature git rebase master

与merge后的分支走向对比:

​​​​​​​

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

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

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

git rebase -i HEAD~2

git rebase -i HEAD~2

注意: rebase的使用规则 1、不要在公用的分支上执行rebase 2、主要的分支进行保护

git diff

​​​​​​​

git diffgit diff HEAD~3git diff master develop
 

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/

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

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

相关文章

数据合规圈必读!《数据合规:实务、技术与法律解码》新书发布!算力智库创始人燕丽盈科律所刘磊联袂著作

今年10月&#xff0c;上海网信办某科技公司因处理政务类数据时违规操作&#xff0c;被责令整改&#xff0c;并处以五万元罚款。 今年7月26日&#xff0c;广州市在净网“2022”专项行动中&#xff0c;某技术公司一款APP系统因未履行数据安全保护义务&#xff0c;导致1000万余条…

ubuntu 20.04 设置DNS

ubuntu 20.04 设置DNSubuntu 20.04 设置DNS 快捷步骤下面是命令解释1、决定系统dns的文件是/etc/resolv.conf2、谁能影响/etc/resolv.conf3、/etc/resolv.conf软链接到/run/systemd/resolve/resolv.confubuntu 20.04 设置DNS 快捷步骤 修改 /etc/systemd/resolved.conf 文件&a…

阿里内部出品的这5份手册的含金量有多高,你不会还不知道吧

前言 秋招过去也是有一个月有余了,该说不说顺利的伙计已经拿下offer了,肯定还有部分的伙计还在苦苦挣扎中,这里小编只说一句话,革命还未成功,同志们仍需努力哈哈哈,拿下offer了才能稳稳当当的坐住,坐踏实,那么问题来了,有些伙计在做面试准备的时候总是会抓不到重点,忽略一些重…

2023最新SSM计算机毕业设计选题大全(附源码+LW)之java成绩管理与学情分析系统11yzf

好的选题直接决定了毕业设计好坏&#xff0c;甚至决定了能否毕业。今天&#xff0c;我们就来聊一聊毕设该怎么选题。 这里分三个选题标准。 第一&#xff0c;参考所在学校往年选题类型和难度 可以向学长学姐了解往年的选题类型&#xff0c;以及使用的技术&#xff0c;不用向…

win10下PyUSB访问USB驱动

目录 一、安装pyusb 二、下载工具zadig 三、确认目标USB设备 四、为目标设备安装USB驱动 五、测试代码 六、小结 1. 关于环境搭建 2. 关于总线上的数据 环境&#xff1a; Win10专业版Python3.8.7 一、安装pyusb 命令 pip install pyusb 二、下载工具zadig Zadig是…

[附源码]Python计算机毕业设计Django疫情背景下社区互助服务系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

数据库索引分裂 问题分析

1、背景描述&#xff1a; 某客户反馈在 18 点 30 分左右出现性能问题&#xff0c;活动会话飙升&#xff0c;业务卡顿。 2、问题分析 通过awr 可以看到大量的索引分裂等待&#xff0c;和并发的事务槽等待&#xff0c;事务槽的并发等待是由于索引分裂阻塞大量会话导致的并发加剧…

测试gitlab-runner

上一篇&#xff1a;Docker安装Gitlab-ruuner_素心如月桠的博客-CSDN博客https://blog.csdn.net/m0_47010003/article/details/127997515 总结&#xff1a; 上一篇中操作到&#xff1a; &#x1f4cc;安装了gitlab-runner&#xff0c;在gitlab中创建一个项目&#xff08;testci&…

Java匿名内部类

Java匿名内部类\huge{Java匿名内部类}Java匿名内部类 匿名内部类 ①. 概念&#xff08;定义&#xff09; 通俗一点来讲匿名内部类就是没有名字的局部内部类。 注意这里的两点&#xff1a; 没有名字局部内部类 ②. 作用 方便创建子类的对象&#xff0c;最终的目的是简化代…

Linux内核Hook系统调用execve

在Linux系统中&#xff0c;用户层程序无法直接控制系统内核&#xff0c;只能通过系统调用。 一般调用顺序为: 用户进程->execve()->syscall()->stub_execve()->sys_execve()-> do_execve()..... 本文章使用的是国产uos-Linux&#xff0c;内核为 4.19.0-amd64-…

数组实现单链表和双链表

全文目录&#x1f600; 数组实现的优势&#x1f914; 单链表&#x1f615; 初始化&#x1f615; 头插&#x1f615; 在下标 k 后面插入元素&#x1f615; 删除下标 k 后面的元素&#x1f615; 遍历&#x1f635;‍&#x1f4ab; 双链表&#x1f928; 初始化&#x1f928; 插入&…

利用Python自制一个批量图片水印添加器

前段时间写了个比较简单的批量水印添加的python实现方式&#xff0c;将某个文件夹下面的图片全部添加上水印。 今天正好有时间就做了一个UI应用的封装&#xff0c;这样不需要知道python直接下载exe的应用程序使用即可。 下面主要来介绍一下实现过程。 首先&#xff0c;还是老…

WebDAV之葫芦儿·派盘 + PDF Expert

PDF Expert 支持WebDAV方式连接葫芦儿派盘。 推荐一款备受称赞的PDF阅读工具PDF Expert,一款超简单的PDF编辑器。 PDF Expert是一款macOS上的办公软件,它具有专业的PDF编辑功能,可以快速从邮件、网页支持PDF打开,支持用户进行阅读、批注等功能,用户可以直接在PDF上进行…

机器学习10线性回归法Linear Regression

文章目录一、线性回归算法简介二、简单线性回归的实现三、向量化运算四、衡量线性回归法的指标&#xff0c;MSE,RMS,MAEMSE均方误差&#xff08;Mean Squared Error&#xff09;RSE均方误差&#xff08;Root Mean Squared Error&#xff09;平均绝对误差MAE&#xff08;Mean Ab…

在职场,如何克服拖延症?

在职场&#xff0c;你遇见过这样的情况吗&#xff1a;领导让你写一份方案&#xff0c;你一拖再拖&#xff0c;直到最后一天才打开电脑。 这就是拖延症的表现。很多人做一件事常常拖到截止时间的临界点&#xff0c;才被压力所迫开始做事。 也有的人是因为觉得自己解决不了事情&…

PXE + Kickstart 服务器批量安装Linux系统

一、无人值守安装服务 使用光盘镜像来安装Linux系统的方法,该方法适用于只安装少量Linux系统的情况。如果生产环境中有数百台服务器都需要安装系统,这种方式就不合时宜了。这时,我们就需要使用PXE + TFTP +HTTP + DHCP + Kickstart服务搭建出一个无人值守安装系统。这种无人…

vue中提示框 this.$confirm如何让提示框换行

let confirmText [案件号为response.businessInformation.claimNo, 点击确认跳转到查勘继续操作该案件,点击取消跳转到新建赔案查询页面] const newDatas [] const h this.$createElement for (const i in confirmText) { newDatas.pu…

「Whale 帷幄」SpaceSight 产品升级 | 打造门店数智化未来

11月&#xff0c;「帷幄数智空间 Whale SpaceSight」迎来新的功能更新&#xff0c;一起来看一看&#xff0c;它将为您的门店数字化带来哪些强大助力。 我们将通过三篇系列文章&#xff0c;为您介绍 SpaceSight 在出入口客流分析、店内客流分析、门店巡检三大场景下&#xff0c;…

[附源码]计算机毕业设计JAVA郑工校园二手交易平台网站

[附源码]计算机毕业设计JAVA郑工校园二手交易平台网站 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM…

HTML学生中秋节日网页设计模板 DIV布局大学生中秋节网页作业制作 八月十五中秋静态网页成品代码下载 中秋节日网页设计作品

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