对gitlab多人协同开发的理解
简介
• 多人开发同一个项目,为了充分调度多人协同开发的优势,而又不产生冲突(开发的功能冲突),所以git就在Linux之父的手中诞生了。
• 当多人开发同一个项目,并且有一个项目管理者对这个项目做一个统一的管理(说白了就是项目管理者审核开发人员做的这一部分书写是否规范,实现的代码是否完成了整个项目需要的某一项功能),如果是符合要求的,就执行merge,将开发人员代码合并进来,如果不符合,那就退回去让开发人员拿回去重新改。
整体流程
(开发人员叫孙悟空,故分支名字在此处用孙悟空命名)
- 开发人员使用git clone命令,下载一个管理员建好的项目到自己的本地
- 开发人员在本地创建自己的分支并切换到自己的分支(
git checkout -b sunwukong
) - 开发人员在本地写代码,在自己的分支上add,commit,push(注意:push到的是自己的远程分支,所以要用
git push origin sunwukong
) - 开发人员到gitlab页面创建一个合并请求
- 团队的管理员收到合并请求,并查看员工提交代码并决定是否将开发人员(孙悟空等人)的代码合并到整个项目分支
具体实现细节
为了方便大家理解,所以开发人员叫孙悟空,管理人员叫唐僧
一、管理人员在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
还没有评论,来说两句吧...