对gitlab多人协同开发的理解

迈不过友情╰ 2022-12-10 01:14 155阅读 0赞

简介

   • 多人开发同一个项目,为了充分调度多人协同开发的优势,而又不产生冲突(开发的功能冲突),所以git就在Linux之父的手中诞生了。
   • 当多人开发同一个项目,并且有一个项目管理者对这个项目做一个统一的管理(说白了就是项目管理者审核开发人员做的这一部分书写是否规范,实现的代码是否完成了整个项目需要的某一项功能),如果是符合要求的,就执行merge,将开发人员代码合并进来,如果不符合,那就退回去让开发人员拿回去重新改。

整体流程

(开发人员叫孙悟空,故分支名字在此处用孙悟空命名)

  1. 开发人员使用git clone命令,下载一个管理员建好的项目到自己的本地
  2. 开发人员在本地创建自己的分支并切换到自己的分支(git checkout -b sunwukong
  3. 开发人员在本地写代码,在自己的分支上add,commit,push(注意:push到的是自己的远程分支,所以要用git push origin sunwukong
  4. 开发人员到gitlab页面创建一个合并请求
  5. 团队的管理员收到合并请求,并查看员工提交代码并决定是否将开发人员(孙悟空等人)的代码合并到整个项目分支

具体实现细节

为了方便大家理解,所以开发人员叫孙悟空,管理人员叫唐僧
一、管理人员在gitlab上创建了一个项目
  管理人员唐僧在gitlab上创建了一个项目,并设置开发人员有相应的权限级别,分为Guest,Reporter,Developer,Maintainer等这几个角色,这几个角色的权限从低到高排列。
  在这里我们把孙悟空设置成Developer权限的开发人员,而唐僧本人是Maintainer权限的开发人员。Developer能够推送和删除没有保护的分支,Maintainer可以对没有保护和有保护的分支进行任何操作。所以孙悟空没有权限推送自己修改的代码到被保护分支上。
  如下图所示为唐僧创建项目图片,分支为master
在这里插入图片描述

  增加开发人员孙悟空为developer权限的开发人员
在这里插入图片描述

  将master分支设为保护分支
在这里插入图片描述

二、开发人员使用git clone命令,下载一个管理员建好的项目到自己的本地
  开发人员(孙悟空执行) git clone ssh://git@192.168.后面的ip,端口,项目名替换成自己的就可以了
  如下图所示:(图中最后提示的两句信息无用,可忽略,后面的图片可能也有,忽略即可)
在这里插入图片描述

  开发人员在本地创建自己的分支并切换到自己的分支,在创建自己的分支的时候别忘了先 cd 进clone下来的文件夹
  git checkout -b sunwukong

在这里插入图片描述

三、开发人员在本地写代码,在自己的分支上add,commit,push
   开发人员孙悟空创建了一个新的文件叫做孙悟空的文件.py,然后执行
  git add .
  git commit -am '孙悟空开发的新文件'
  git push origin sunwukong

  之后成功的将本地的sunwukong分支的文件推到远程sunwukong分支上,如下图为推送成功截图:
  
在这里插入图片描述

  如下图为推送成功后,从gitlab网页端看到孙悟空分支上添加了一个新的文件叫做孙悟空的文件。
在这里插入图片描述

四、开发人员到gitlab页面创建一个合并请求
  从上一张网页端gitlab文件的右上角我们看到有一个蓝色底的creat merge request,点击之后按照下图中由上往下选择title,description,assign(发送给唐僧管理员),source branch(需要合并的分支源),target branch(合并的目标分支)然后点击绿色的 submit merge request。如下图所示:
在这里插入图片描述

  之后合并请求被发送给了管理员唐僧,唐僧可以通过网页端看到有一个合并请求,如果绑定了邮箱,邮箱也会收到合并请求的邮件。
五、团队的管理员收到合并请求后,决定是否合并
  下面开始管理管理员唐僧对孙悟空提交的代码开始审核了。
   唐僧在git命令行上执行git fetch,将远程sunwukong分支刚修改完代码推上去的东西拿取下来,但是只是拿到了本地的远程仓库,并没有拿到工作区(说白了就是git fetch只会将本地库所关联的远程库的commit id更新至最新)。所以管理员唐僧在工作区是看不到修改的文件的。
  如下图所示:
在这里插入图片描述

  执行 git log master..origin/sunwukong 可以看到孙悟空的提交log(看log我们就先不放图片了)
  管理员唐僧执行 git merge origin/sunwukong 可以将孙悟空提交的审核合并到当前工作区。这样管理员唐僧就可以在编译器上看到孙悟空想要执行合并的代码。(注意此时只是合并到当前工作区,并没有push到远程master分支),如下图所示:
在这里插入图片描述

  如果唐僧对孙悟空修改的代码不满意,唐僧可以回滚代码。
  回滚到上一步的git代码:git reset --hard HEAD^
  此时本地工作区的代码将会回归到没有merge合并之前的样子
  如果唐僧对孙悟空修改的代码感觉很赞,想要将他的代码合并进自己的分支,直接使用git push 将当前工作区的代码推到远程仓库master分支即可。如下图所示:
在这里插入图片描述

  此时进入gitlab网站,可以看到合并请求显示合并成功了。

鸣谢: http://www.360doc.com/content/14/0508/17/14416931_375851686.shtml

发表评论

表情:
评论列表 (有 0 条评论,155人围观)

还没有评论,来说两句吧...

相关阅读

    相关 gitlab协同工作

    gitlab多人协同工作 本文为亨利向《Git权威指南》的作者蒋鑫老师的答疑邮件写成。 这里特别感谢蒋鑫老师对我询问gitlab的协同工作流程问题的详细解答。 蒋鑫老

    相关 租户理解

    一、 多租户定义 多租户定义: 多租户技术或称多重租赁技术,简称SaaS,是一种软件架构技术,是实现如何在多用户环境下(此处的多用户一般是面向企业用户)共用相同的系统或程