本文转载,原文信息如下: 作者:Adelly 来源:CSDN 原文:https://blog.csdn.net/Adelly/article/details/79099772
一、基本操作 1 1.登录: 2.修改密码: 二、项目管理 1.新建项目 2.编辑或删除项目 三、用户管理(管理员使用,非管理员跳过此步骤) 1.新建用户 2.编辑和删除用户 四、组管理(管理员使用,非管理员跳过此步骤) 1.新建组 2.编辑或删除组 3.添加组成员 4.修改成员的权限(owner用户操作) 5.从组管理添加项目 五、权限说明 六、Gitlab在eclipse中的使用 1.生成SSH key 2.发布公钥到服务器 3.相关的具体操作 1)在Eclipse中新建一个项目,此处新建测试用的项目是GitPro1 2)新建GitPro1项目的仓库 3)配置.gitignore来过滤不需要上传的文件 4)将项目Commit到本地仓库 5)修改文件后commit 6)添加新文件后的处理 7)查看历史提交记录 8)Push到Gitlab 9)使用.gitkeep来追踪空的文件夹 10)clone 在GitLab中已有项目 11)新建自己的分支进行开发并push到远程分支 12)新建分支与master分支进行合并请求(Merge Request) 13)退回历史版本 14)推送冲突的解决 15)自建分支开发前获取远程master更新并与本地合并 16)自建工程push到远端后本地git没有远端追踪的解决方案 七、 Visual Studio Code 使用 Git 进行版本控制
在浏览器地址栏输入http://10.6.2.160/ 回车,进入登陆界面。
在上图红框区域登陆自己的账户密码。
登录成功后点击左侧工具栏目Profile Settings ------ Password -------修改密码-------Save password。
【Tips】 点击GitLab的logo,可以从任何界面回到本页
可以根据需要选择新建项目、新建组合新建用户
如下图所示新建项目:
创建时可以选择在自己用户下创建或者某个群组内创建:
a. 项目名称,项目名称可以为字母、数字、空格、下划线、中划线和英文点号组成,且必须以字母或数字开头,不能使用中文;
b. 项目描述
c.可见性(库类别)
根据实际情况填写完各项之后,点击创建项目,项目创建成功。
提示通过SSH方式拉取推送项目代码必须要导入SSH key,这个稍后再介绍。 项目地址有HTTP和SSH两种方式-------可发送给开发人员下载和初始化项目。
主页左边菜单栏--------Project
右上角的齿轮状按钮--------编辑项目
或者点击Admin Area
点击顶端的Admin Area按钮
可以进入管理页面
填写信息:
菜单栏Group------New Group
1). 组名称,组名称可以为字母、数字、空格、下划线、中划线和英文点号组成,且必须以字母或数字开头,不能使用中文
2). 组详情
在此页面可以编辑和删除组。
添加组用户并赋予相应的权限。
点击左侧的Groups,然后点击当然的组。
然后点击左侧Members菜单进入。
修改想要修改的用户的权限并save。
从组里添加项目可免去再添加项目用户的步骤,因此我们选择从组内添加工程。
点击左侧Group,然后点击齿轮按钮。
然后点击Project,接着点New Project:
按步骤填写最后点击Create Project创建项目。
此时组内成员都能看到这个项目已经被创建。
Guest(匿名用户) - 创建项目、写留言薄。
Reporter(报告人)- 创建项目、写留言薄、拉项目、下载项目、创建代码片段。
Developer(开发者)- 创建项目、写留言薄、拉项目、下载项目、创建代码片段、创建合并请求、创建新分支、推送不受保护的分支、移除不受保护的分支 、创建标签、编写wiki。
Master(管理者)- 创建项目、写留言薄、拉项目、下载项目、创建代码片段、创建合并请求、创建新分支、推送不受保护的分支、移除不受保护的分支 、创建标签、编写wiki、增加团队成员、推送受保护的分支、移除受保护的分支、编辑项目、添加部署密钥、配置项目钩子。
Owner(所有者)- 创建项目、写留言薄、拉项目、下载项目、创建代码片段、创建合并请求、创建新分支、推送不受保护的分支、移除不受保护的分支 、创建标签、编写wiki、增加团队成员、推送受保护的分支、移除受保护的分支、编辑项目、添加部署密钥、配置项目钩子、开关公有模式、将项目转移到另一个名称空间、删除项目。
我们用的是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是公钥。
用记事本打开刚刚保存的id_rsa.pub文件,能看到如图所示的类似内容,将他们复制下来。
用你的用户登录到GitLab, Profile Settings->ssh keys->add ssh key. 给用户添加全局的公钥文件。
把刚刚复制的内容粘贴到页面上,add key。
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远程分支了。