目录
1)在Eclipse中新建一个项目,此处新建测试用的项目是GitPro1
12)新建分支与master分支进行合并请求(Merge Request)
16)自建工程push到远端后本地git没有远端追踪的解决方案
一、基本操作
1.登录:
在浏览器地址栏输入http://10.6.2.160/ 回车,进入登陆界面。
在上图红框区域登陆自己的账户密码。
2.修改密码:
登录成功后点击左侧工具栏目Profile Settings ------ Password -------修改密码-------Save password。
Tips:
点击GitLab的logo,可以从任何界面回到本页
二、项目管理
可以根据需要选择新建项目、新建组合新建用户
1.新建项目
如下图所示新建项目:
创建时可以选择在自己用户下创建或者某个群组内创建
a. 项目名称,项目名称可以为字母、数字、空格、下划线、中划线和英文点号组
成,且必须以字母或数字开头,不能使用中文
b. 项目描述
c.可见性(库类别)
私有库:只有被赋予权限的用户可见
内部库:登录用户可以下载
公开库:所有人可以下载
根据实际情况填写完各项之后,点击创建项目,项目创建成功
提示通过SSH方式拉取推送项目代码必须要导入SSH key,这个稍后再介绍。
项目地址有HTTP和SSH两种方式-------可发送给开发人员下载和初始化项目
2.编辑或删除项目
主页左边菜单栏--------Project
右上角的齿轮状按钮--------编辑项目
右下角删除项目。
或者点击Admin Area
三、用户管理(管理员使用,非管理员跳过此步骤)
1.新建用户
点击顶端的Admin Area按钮
可以进入管理页面
1) 姓名(可以是中文)
2) 用户名(可以为字母、数字、空格、下划线、中划线和英文点号组成,且必须以字母或数字开头,不能使用中文)
3) 邮箱地址(首次接收密码)
4) 建项目的数量限制
5) 是否可以创建组
6) 是否是管理员
7) 选填内容(个人联系方式)
2.编辑和删除用户
四、组管理(管理员使用,非管理员跳过此步骤)
1.新建组
菜单栏Group------New Group
1). 组名称,组名称可以为字母、数字、空格、下划线、中划线和英文点号组成,
且必须以字母或数字开头,不能使用中文
2). 组详情
2.编辑或删除组
在此页面可以编辑和删除组
3.添加组成员
添加组用户并赋予相应的权限。
4.修改成员的权限(owner用户操作)
点击左侧的Groups,然后点击当然的组。
然后点击左侧Members菜单进入。
修改想要修改的用户的权限并save
5.从组管理添加项目
从组里添加项目可免去再添加项目用户的步骤,因此我们选择从组内添加工程。
点击左侧Group,然后点击齿轮按钮。
然后点击Project,接着点New Project
按步骤填写最后点击Create Project创建项目。
此时组内成员都能看到这个项目已经被创建。
五、权限说明
Guest(匿名用户) - 创建项目、写留言薄
Reporter(报告人)- 创建项目、写留言薄、拉项目、下载项目、创建代码片
段
Developer(开发者)- 创建项目、写留言薄、拉项目、下载项目、创建代码
片段、创建合并请求、创建新分支、推送不受保护的分支、移除不受保护的分
支 、创建标签、编写wiki
Master(管理者)- 创建项目、写留言薄、拉项目、下载项目、创建代码片
段、创建合并请求、创建新分支、推送不受保护的分支、移除不受保护的分
支 、创建标签、编写wiki、增加团队成员、推送受保护的分支、移除受保护
的分支、编辑项目、添加部署密钥、配置项目钩子
Owner(所有者)- 创建项目、写留言薄、拉项目、下载项目、创建代码片
段、创建合并请求、创建新分支、推送不受保护的分支、移除不受保护的分
支 、创建标签、编写wiki、增加团队成员、推送受保护的分支、移除受保护
的分支、编辑项目、添加部署密钥、配置项目钩子、开关公有模式、将项目转
移到另一个名称空间、删除项目
六、Gitlab在eclipse中的使用
1.生成SSH key
我们用的是eclipse自带的生成key的工具,windows->preferences->General->Network Connections->SSH2,点击SSH2。
在key management处点生成RSAkey
后面输入key的说明和密码,密码也可以空着。点save private key. 把生成的key文件存到用户目录的.ssh目录下。(像第一张图中SSH2 Home指定的目录)
会生成两个文件,一个id_rsa是私钥,一个id_rsa.pub是公钥。
2.发布公钥到服务器
用记事本打开刚刚保存的id_rsa.pub文件,能看到如图所示的类似内容,将他们复制下来。
用你的用户登录到GitLab, Profile Settings->ssh keys->add ssh key. 给用户添加全局的公钥文件。
把刚刚复制的内容粘贴到页面上,add key。
3.相关的具体操作
1)在Eclipse中新建一个项目,此处新建测试用的项目是GitPro1
2)新建GitPro1项目的仓库
在项目上右键 -> Team ->Share Project -> Git -> Next
Create->自定义仓库名称->Finish
在D:\Program Files\Git\GitPro1目录下可以看到GitPro1仓库了
同时,eclipse中的project也建立git版本控制,此时未创建分支,处于NO-HEAD状态
文件夹中的”?”表示此文件夹处于untracked状态,这样就成功创建Git仓库。
3)配置.gitignore来过滤不需要上传的文件
这种情况针对带maven依赖的工程!!(因为.classpath .settings .project | clone下来时会有影响造成无法下载jar包依赖)
普通工程暂时不用过滤文件
在工程实现过程中,会生成一些中间文件,或者在项目中的部分文件是不需要进行版本管理的。对于这些文件应该对于Git来讲是透明的。Git提供这种功能,可以自己指定哪些文件可以不被管理。具体方法是在版本管理的根目录下(与.Git文件夹同级)创建一个 .gitignore(gitignore是隐藏文件,所以前面有个点)
右键工程->new file->输入.gitignore 生成.gitignore文件
在界面上输入.classpath .settings .project 保存。可以在仓库视图的Working Directory中看到这个文件。此时你commit时会自动过滤掉这三类文件。若本来工程下面就有这个文件里面如果有/bin/类似的文字不要删除,直接换行添加你需要过滤的文件。
这个在项目里看不到,可以仓库视图的work
4)将项目Commit到本地仓库
尝试提交GitPro1项目,右键->Team->Commit
提示验证信息,将自己用户名和邮箱填写进去,点OK. 下次就不需要填写了。
点击 Commit。我们就把上图中status选中的文件提交到本地git库中了。这些文件从此受git的版本监控了。并且提交注释为version1.0(这个以后用到,当作状态标记)。
接下来打开git repositories视图(Window->show view->other->Git->Git Repositories->OK)
此时,来看看git repositories视图:
这个就是我们在本地git仓库的结构。
5)修改文件后commit
当我们修改GitTest.java的时候。文件状态会发生改变
选中修改过的文件。右击Team->commit. 提交时注释信息为”version 1.1”。
提交完成后,git状态如图
6)添加新文件后的处理
SecondFile.java是我新建的类,“?”表示这个文件未受git库版本监控。要想加入监控:选中这个文件,右击 team > add to index. 之后commit。
7)查看历史提交记录
项目->Team -> Show in history 可以查看版本历史提交记录
8)Push到Gitlab
将本地的git库中的内容push到服务器端的远程仓库
项目->Team -> Remote -> Push填写相关信息后 -> next -> Add All Branches Specs ->Finish
Tips: URI在登陆后的Project栏点击,复制中间的地址。
填写好后,点击next –>Add All Branches Spec->Finish.
完成后:
提示项目已经push到服务器。
我们可以在Gitlab中点击Browse Files查看已经上传的代码。
9)使用.gitkeep来追踪空的文件夹
Git会忽略空的文件夹。如果你想版本控制包括空文件夹,根据惯例会在空文件夹下放置.gitkeep文件。其实对文件名没有特定的要求。一旦一个空文件夹下有文件后,这个文件夹就会在版本控制范围内。
10)clone 在GitLab中已有项目
为演示,先删除刚刚在eclipse里创建的GitPro1项目
客户端Eclipse上,打开git Repositories视图。点击 . clone a git Repository.
输入信息后点击next,我们会看到服务端git库的分支master出现了
Next
点击Finish. 我们的clone就完成了。
现在在自己的工作空间创建了服务器端的项目。
克隆服务器端仓库后,会在本地建立一个一样的仓库,称本地仓库。
如果clone带有过滤文件的maven+git工程时,clone下来时是无法直接到工作空间的。需要从仓库视图里导入。
当clone下来带有过滤后的Maven+git工程时在git仓库视图右键—>Import projects—>Import as general project—>next—>finish,此时eclipse工作空间就导入了项目,但现在是没有maven的,右键工程—>Configure—>Convert to maven project,现在工作空间的工程就是一个完整的maven+git工程了。
11)新建自己的分支进行开发并push到远程分支
Team->Switch To->New Branch
此时,刚刚clone下来的分支已经切换成自己的分支,我们就能在自己的分支上任意开发了
在自己分支上开发,修改文件并commit提交到本地仓库。
接下来要push到远程的新建分支
Team->Remote->push->Next->Add Spec->Next->Finish
成功将自己修改后的代码提交到远程新建的自己的分支
现在在Gitlab上就能看到两个分支,一个master主分支(保护状态,developer无法push)和yjx新建分支
12)新建分支与master分支进行合并请求(Merge Request)
登陆自己的Gitlab账户。点击Project或进入工程点击Branch会看到创建合并请求的标签:
.
点击Merge Request
此时,管理员登陆Gitlab后点左侧Projects->GitPro1->Merge Requests
管理员任何新建分支提交的代码,审阅后没有问题的情况下点击Accept Merge Request
此时我们看到合并到master分支后的情况
Tips: matser用户可以直接push到master分支。Developer无法直接push到受保护的master分支,必须先建立自己的分支,再提交,推送,请求合并。
13)退回历史版本
远程仓库和本地仓库都存放有我们提交的每一个历史版本。
打开工程的历史,在要退回的历史版本上右键reset->Hard->yes,工程就退回历史版本了
14)推送冲突的解决
对于master用户来说:
假定咱们clone到本地的工程分支保持不变是1.1版本,但是服务器远程分支已经被更新到1.3版本了,此时就会产生冲突,无法提交:
此时我们要将工程pull到最新 team->pull将远程的修改pull到本地git库:
点ok。你回发现工作空间的项目出现冲突的标志。
此时,选择冲突的文件GitTest.java右击,Team > merge tool .
选择第二项,ok。
根据比较修改左边的文件,也就是你工作空间中的文件。解决完冲突之后。保存。如图状态。
现在你可以提交这个文件了。选中GitTest.java 右击team > add to index .
此时工作空间中的图标有所变化。
当出现灰色的雪花符号时,你就可以进行提交并 push到服务器端。
commit 状态
之后,push。
现在成功push
15)自建分支开发前获取远程master更新并与本地合并
作为developer用户在自己的分支上先右键->fetch from upstream将远程master分支的最新版本更新到本地,ok。 接着右键->team->merge ,如图选择下面远程仓库的master分支,Merge,选择最新的版本,点ok,则当前自己的分支已更新到远程master分支同步。
Merge之后当前分支已经和服务器端远程仓库的master分支一致了,就可以继续开发了。
16)自建工程push到远端后本地git没有远端追踪的解决方案
这种情况发生在我们自己建立的工程,并且在该工程下继续开发时。本地新建工程后
进行commit-push,将代码推送到服务器端后,会发现本地git视图的远程追踪是空的,只有本地追踪。此时,如果有人参与该工程,并且远端分支修改,你需要fetch时,在IDE中时无法操作拉远程分支的。
如何解决这个问题?我们切到git仓库视图,在下图中的Remotes仓库的小图标上右键,点击Create Remote,再点击configure fetch,点ok。
然后将服务器web端的工程URL粘贴在下图中,并填上主机地址。点finish。接下来再点击左下角的save and fetch。然后大功告成,最后一张图中我们就看到方框中远程追踪已经出现了,接下来你就可以任意的fetch远程分支了。