版本管理之gitlab实践教程基础篇5

firsttry firsttry     2023-02-26     382

关键词:

技术分享图片
有使用github经验的一定非常熟悉pull request,而关于pull request的理解常常让很多人不解.而在gitlab中被称为了merge request,在字面上理解起来似乎更加轻松.这篇文章通过一个简单的例子来演示一下如何使用merge request.

pull request VS merge request

pull request在开源项目中极其常见,被简称为PR。素未谋面的一群人在一起一起开发一个项目,你看到某个项目很好Fork下来,添加了一个功能发了个PR给Owner,Owner评审完之后觉得很OK,就Merge到他的项目中。
至于pull reqeust的理解,如果理解为这是一个要执行者去pull的request,则基本上和其真正的意思相差甚远。但是如果理解为,这是一个request,目的是让Owner去pull然后去合并则会较为接近其使用方法。而在gitlab中则直接叫作merge request,
就是要求Owner进行合并而发出的一个提示,Owner确认完之后Accept便可合并进取,尤其是新手理解起来可能会更加容易。

事前准备

只有一个Master分支的仓库,project名为demoprj,里面只有一个README.md文件

[root@ku8-1 demoprj]# git branch
* master
[root@ku8-1 demoprj]# ls
README.md
[root@ku8-1 demoprj]# cat README.md 
Hello, Liu Miao[root@ku8-1 demoprj]# 
[root@ku8-1 demoprj]# 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

创建一个hellowrld分支

[root@ku8-1 demoprj]# git checkout -b fea-helloworld
Switched to a new branch ‘fea-helloworld‘
[root@ku8-1 demoprj]# git branch
* fea-helloworld
  master
[root@ku8-1 demoprj]#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

给新创建的分支添加一个文件并push

[root@ku8-1 demoprj]# echo "Hello, World" >HelloWorld
[root@ku8-1 demoprj]# git add HelloWorld 
[root@ku8-1 demoprj]# git commit -m "Init HelloWorld file with Hello, World"
[fea-helloworld fe9111a] Init HelloWorld file with Hello, World
 1 file changed, 1 insertion(+)
 create mode 100644 HelloWorld
[root@ku8-1 demoprj]# git push origin fea-helloworld
Counting objects: 4, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 305 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: 
remote: Create merge request for fea-helloworld:
remote:   http://23467013e0a9/root/demoprj/merge_requests/new?merge_request%5Bsource_branch%5D=fea-helloworld
remote: 
To git@172.17.0.2:root/demoprj.git
 * [new branch]      fea-helloworld -> fea-helloworld
[root@ku8-1 demoprj]#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

结果确认

可以看到刚刚创建的helloworld分支fea-helloworld
技术分享图片

创建Merge Request

确认的分支上的Create Merge Request提供了一个快捷的合并通道,点击便可以创建一个Merge Request。
技术分享图片
这个即将创建的Merge Request是From fea-helloworld into master的信息,前面说过这是一个快捷通道,可以看到Title和Source Branch以及Target Branch等均已设定,设定一下Assignee就可以直接Submit。

Accept Merge Request

因为此文演示的demoprj中只有一个owner用户,未曾创建其他用户,请求和接受相当于左手交道右手,根本不用切换用户。可以看到merge request的tab显示为1,同时此页面有个Accept Merge Request按钮,点击即接受此合并请求了。
技术分享图片

接受确认

可以清晰地看到提示已经被Merged了,同时merge request的tab显示也变成了0,表明没有确认中的Merge Request了。
技术分享图片

结果确认

上面说过这其实就是一个合并请求和合并接受的过程,在helloworld分支中创建了一个HelloWorld文件,是否合并到了master呢,经过确认发现确实已经合并,这样一个PR的流程就走完了。
技术分享图片

总结

这篇文章使用了一个非常简单的例子对gitlab的Merge Request的使用方法进行了说明,但是在实际的使用中,更多的时候合并相当的复杂,需要对内容进行认真的审查,而如何通过流程减少不必要的手工合并一直是开发中一个重要的课题。

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow










版本管理之gitlab实践教程基础篇3

comment是版本管理中非常重要的内容,尤其是在经年累月的大型项目中,铁打的项目,流水的SE,哪怕只言片语的留下,对后来者问题的对应很多时候都能起到重要作用,这篇文章用来讲解git中如何进行comment的管理.为什么需要comment为什么... 查看详情

版本管理rcs之命令基础篇

RCS作为非常古老的版本工具,远远在SVN和已经退役的CVS之前。它的古老程度应该比Web开发的ASP前代的CGI还要久远。但是作为非常简单的文本格式的版本管理工具,它使用时间跨度之久令人惊奇。如果想对版本管理实现方式进行深... 查看详情

devops实战版本管理实践指南

版本管理是DevOps实践中非常重要的一环,本系列教程以svn和git为中心,结合分支管理模型,介绍版本管理如何与工具结合,如何进行项目实践。svn实践指南基础篇项目内容链接No.1简介&安装https://blog.csdn.net/liumiaocn/article/details/... 查看详情

持续集成之jenkins实践教程基础篇4集成redmine

...际中如何使用以及如何更好地使用jenkins,一直是大家在实践并讨论的。本系列文章将会从如何使用jenkins方面对一些细节进行总结和整理,这篇文章将会介绍如何在Jenkins中实现与redmine的集成事前准备只要有jenkins即可,没有的可... 查看详情

[基础篇]esp8266-sdk教程之helloworld!(代码片段)

...作。这里推荐大家安装一下Git这个灰常炒鸡好用的分布式版本管理神器,本人是非常喜欢这款由Linux之父LinusTorvalds开发的工具,可以很方便让我完成一些工作,比如说copy代码~哈哈,作为初级菜鸟程序员会用Git也是一个加分项,... 查看详情

大数据之路之linux篇(代码片段)

...什么要学习Linux1.2Linux是什么1.3Linux创始人1.4Linux主要发行版本1.5Linux和Unix前世今生2.Linux系统基础篇2.1Linux安装2.2Linux用户管理、组管理、权限管理2.3Linux磁盘基础知识、分类、分区、挂载、卸载、扩容等操作;2.4Linux网络配置&#... 查看详情

项目版本管理的最佳实践:云效飞流flow篇

...云云效来讲解飞流Flow的最佳实践目录一、分支规约二、版本号规约2.1主版本号(首位版本号)2.2次版本号(迭代号)2.3小版本号三、云效飞流Flow的最佳实践(使用阿里云云效)3.1总体流程图3.2弓行同学与阿吉同学的最佳实践3.2.... 查看详情

软件项目量化管理(cmmi高成熟度)实践经验谈——之项目管理过程监督与控制篇

续:软件项目量化管理(CMMI高成熟度)实践经验谈——之概述篇续:软件项目量化管理(CMMI高成熟度)实践经验谈——之项目管理过程策划篇2、项目监督与控制    项目监控是环绕项目实施计划,跟踪进度、成本... 查看详情

git工程开发实践——gitlab服务搭建(代码片段)

...itLab简介1、GitLab简介?GitLab是一个利用RubyonRails开发的开源版本管理系统,是集代码托管、测试、部署于一体的开源git仓库管理软件,可通过web界面来进行访问公开或私人项目。GitLab能够浏览代码,管理缺陷和注释,可以管理团队... 查看详情

软件项目量化管理(cmmi高成熟度)实践经验谈——之项目管理过程策划篇

续:软件项目量化管理(CMMI高成熟度)实践经验谈——之概述篇二、项目管理过程    软件开发项目管理过程,从项目全视角来看,分为售前、售中、售后等三个大的阶段。本文所谈的是售中阶段项目管理过程。... 查看详情

androidstudio版本控制之svn图文教程篇

AndroidStudio版本控制之SVN图文教程篇个人主页下载和安装客户端SVN客户端(TortoiseSVN)下载地址TortoiseSVN安装教程服务器SVN服务器(VisualSVNServer)下载地址VisualSVNServer安装教程版本说明AndroidStudio:2.1.3TortoiseSVN:1.9.4VisualSVNServer... 查看详情

监控系统实践第15天:5天上手laravel8.5之http请求篇(4/5)(代码片段)

监控系统实践第15天:5天上手Laravel8.5之HTTP请求篇(4/5)前言Laravel基础功能:HTTP请求(Request)简介如何运用?1.接收请求,无额外参数2.接收请求,存在额外参数3.路由中接收请求4.请求类Request的其它方法... 查看详情

rabbitmq基础教程之基本使用篇(代码片段)

RabbitMQ基础教程之基本使用篇最近因为工作原因使用到RabbitMQ,之前也接触过其他的mq消息中间件,从实际使用感觉来看,却不太一样,正好趁着周末,可以好好看一下RabbitMQ的相关知识点;希望可以通过一些学习,可以搞清楚以... 查看详情

git代码仓库管理系统的配置方法之:gitlab

...2.2.2修改配置文件:gitlab.rb2.2.3重新加载配置2.3查看Gitlab版本 查看详情

nodejsrestful架构实践之api篇(转)

whytokenbasedauth?此段摘自http://zhuanlan.zhihu.com/FrontendMagazine/19920223英文原文http://code.tutsplus.com/tutorials/token-based-authentication-with-angularjs-nodejs–cms-22543在讨论了关于基于token认证的一些基础知识后, 查看详情

javase之基础篇——方法

...让读者更好的掌握数组的相关用法。java本来就是侧重于实践,动手操作要比看理论重要的多,其实其他语言也是一个道理,看是看不会的,必须动手去实践。最后通过一个思维导图总结了整篇文章的重点,让读者更加系统地掌... 查看详情

大数据之路之linux篇(代码片段)

...什么要学习Linux1.2Linux是什么1.3Linux创始人1.4Linux主要发行版本1.5Linux和Unix前世今生2.Linux系统基础篇2.1Linux安装2.2Linux用户管理、组管理、权限管理2.3Linux磁盘基础知识、分类、分区、挂载、卸载、扩容等操作;2.4Linux网络配置&#... 查看详情

http协议之实践巩固(深度篇一)

前言:如何写好本篇博客1.http权威指南2.浏览器控制台 3.postman4.阮一峰的协议博客5.spring的控制器那块 请求入参的知识 一:状态码详解:http://tool.oschina.net/commons?type=5     总结自己遇到的状态码问题... 查看详情