GitBash+GitLab+Eclipse使用攻略非常详细版
https://www.2cto.com/kf/201606/521018.html
Git简介及GitLab使用
一、Git Bash 安装
Git使用的版本为1.9.4,因为我的服务器上的gitlab是1.7的,客户端要不服务端的版本要高才可以。
下载地址:https://git-scm.com/download
双击Git-1.9.4-preview20140611.exe文件,进入安装界面,如下图:
2. 两步next后选择安装目录,如下图:
3.next进入Git安装模块选择
4. next进入Git Setup界面,“Adjusting your PATH environment”,选择默认值“Use Git Bash only”,如下图所示:
5. next进入Git Setup界面,“Configuring the line ending conversions”,选择换行格式,选择“Checkout as-is, commit Unix-style line endings”,如下图所示:
二、GitLab使用说明
2.1新建项目
新建项目前,先创建项目所在的组(也就是说这个项目文件是保存在哪个组里)
1. 选择Admin area,选择Groups——New Group
2.填写组名及相关信息(Groups一定要与Teams名称一致)
3. 选择Create New Projcet
输入项目名称,同时在namespace里选择刚才创建的组
2.2创建用户
1. 选择Admin area 选择Users——New User
2.其中Name为对方的中文名(或英文或拼音,能让其他人识别即可,例如:张三、zhangsan),Username使用邮箱的前缀(登录gitlab的用户名),Email为公司邮箱(这个按照公司规定来,不一定非得按照我这样方法)
3. 密码尽量选择复杂、带有特殊字符10个以上的,最好使用随机生成的密码,用户名和密码会发送到对方邮箱
4. 项目现在默认即可,并且把Can create group与Can create team给取消默认的勾选
5. 下面信息默认不输入
6. 信息输入完成后,选择Create user;
2.3重置用户密码
1. 选择Admin area,选择User下面的数字
2. 然后选择User下面的Edit,找到Password项就可以重置密码了;
2.4赋予用户项目权限
1.选择Admin area ,选择Teams
2. 输入组名与信息,点击“Create team”
3.先增加这个组可以对哪些项目有什么权限,选择Add projects
在左侧的Projcet name里可以选择你当前gitlab已经存在的项目
在右侧的Max access选择此组对这个项目最大能有什么权限,默认选择Developer
关于这些权限的介绍
Guest
? Create new issue
? Leave comments
? Write on project wall
Reporter
? Create new issue
? Leave comments
? Write on project wall
? Pull project code
? Download project
? Create a code snippets
Developer
? Create new issue
? Leave comments
? Write on project wall
? Pull project code
? Download project
? Create new merge request
? Create a code snippets
? Create new branches
? Push to non-protected branches
? Remove non-protected branches
? Add tags
? Write a wiki
Master
? Create new issue
? Leave comments
? Write on project wall
? Pull project code
? Download project
? Create new merge request
? Create a code snippets
? Create new branches
? Push to non-protected branches
? Remove non-protected branches
? Add tags
? Write a wiki
? Add new team members
? Push to protected branches
? Remove protected branches
? Push with force option
? Edit project
? Add Deploy Keys to project
? Configure Project Hooks
Owner
? Transfer project to another namespace
? Remove project
完成后选择Add 选择Addmembers
在左侧的User name里选择你当前gitlab里已有的用户
在右侧的 Default projectaccess 里,选择相应的权限,默认最好为 Developer 在最后的Team access下不勾选Admin,然后选择Add,这样就完成了用户与组权限的赋予,该Team中的用户(developer权限)才能对Team中的工程进行clone、pull、push操作
2.5取消用户项目权限 选择Admin area,选择Teams
在Name下选择哪个组,点击 组名称,进入如下界面:
在Members里选择User name的用户,点击那个用户
在右侧的Projcets里,若要改变对该项目的权限,可选择Edit
若要对该项目取消任何权限,则选择删除;
以上为管理员操作,以下为普通用户操作
2.6创建SSH **
目的:git使用https协议,每次pull, push都要输入密码,相当的烦。使用git协议,然后使用ssh**。这样可以省去每次都输密码。Git 服务器使用 SSH 公钥来进行授权。
第一步、看看是否存在SSH**(keys)
需要看看是否看看本机是否存在SSH keys,打开Git Bash,并运行:
$cd ~/.ssh
检查你本机用户home目录下是否存在.ssh目录
如果,不存在此目录,则进行第二步操作,否则,你本机已经存在ssh公钥和私钥,可以略过第二步,直接进入第三步操作。
第二步、创建一对新的SSH**(keys)
输入如下命令:
$ssh-****** -t rsa -C “[email protected]”
这将按照你提供的邮箱地址,创建一对**
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/you/.ssh/id_rsa): [Press enter] 注:此处直接回车
直接回车,则将**按默认文件进行存储。此时也可以输入特定的文件名,比如/c/Users/you/.ssh/gitlab_rsa
接着,根据提示,你需要输入密码和确认密码。
注:如果输入了密码,则每次提交代码是都需要输入该密码,所以直接回车,不设置密码
相关提示如下:
Enter passphrase (empty for no passphrase): [Type a passphrase] 回车
Enter same passphrase again: [Type passphrase again] 回车
输入完成之后,屏幕会显示如下信息:
Your identification has been saved in /c/Users/you/.ssh/id_rsa.
Your public key has been saved in /c/Users/you/.ssh/id_rsa.pub.
The key fingerprint is:
01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db [email protected]
注:这些**要保存好,**文件不要随意删除。
第三步、在web账户中添加公钥
登录web账号,点击My Profile–SSH Keys–Add new
将本机文件/C/Users/you/.ssh/id_rsa.pub使用文本编辑器打开,把文件内容copy出来,粘贴你的**到key输入框中
点击“Save”按钮;
第四步、测试
为了确认我们可以通过SSH连接web,我们输入下面命令。输入后,会要求我们提供验证密码,输入之前创建的密码就ok了。
$ssh -T [email protected]
你可能会看到告警信息,如下:
The authenticity of host ‘git.olymtech.com (121.41.43.201)’ can’t be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)?
不用担心,直接输入yes。
如果看到下面信息,就说明一切完美!
Hi username! You’ve successfully authenticated, but git.olymtech.com does not provide shell access.
2.7另外一种管理项目的方式
第一步:创建工程,选择namespace
Namespace这个选择是用来决定这个工程所属的,可以选User为你自己,或者选择组,这个会影响到后面工程的url。:
a. Global:则表示该工程所在目录是/home/git/repositories/工程名.gitURI:[email protected]:{工程名}.git
b. Groups:则表示该工程所在目录是/home/git/repositories/组名/{工程名}.git
URI: [email protected]:组名/{工程名}.git
c. Users:则表示该工程所在目录是/home/git/repositories/username/{工程名}.git
URI:[email protected]:username/{工程名}.git
工程创建好了之后需要设置Team Member,即对该工程有权限的用户
第二步:在该工程的home页的右边有“Team Member”按钮,如下图:
第三步:点击“New Team Member”按钮,进入设置页面,如下图:
第四步:用户选择成功后,会返回前一页,显示该项目中的团队成员列表,同时在此界面还可以直接修改用户的权限,如下图:
或者是Admin area – Projects –找到该工程,进入,会看到“Edit Team”的按钮
接下来的操作同上第三步
注:若A用户创建了工程P,而没有将B用户放入工程P的Team中,B用户是看不到工程P的;若B用户想要对工程P执行clone、pull、push操作,必须设置B用户为Developer权限;
三、Eclispe使用说明
3.1 Eclipse Git相关配置
在使用git之前你需要配置一下用户名和邮箱,这项配置很重要,每次 Git 提交时都会引用这两条信息,说明是谁提交了更新,所以会随更新内容一起被永久纳入历史记录
Window->Preferences->Team->Git->Configuration
点击“Add Entry”,添加user.name
点击“OK”,再次点击“Add Entry”,添加user.email
为了识别方便,一般此处的user.name填写姓名;user.email为公司邮箱;
这样name和email就设置好了
3.2 本地添加Git工程
右键Import,选择Git—Projects from Git
点击Next,选择Clone URI;
点击Next,将gitlab中该项目的ssh地址复制到URI中,
点击Next
点击Next
点击Next
点击Next
点击Finish,就将服务器上的工程clone到本地了。
3.3 Git commit
点击项目右键team->commit(项目添加到本地仓库)
进入如下界面
提交指南:
a. 请将每次提交限定于完成一次逻辑功能。并且可能的话,适当地分解为多次小更新,以便每次小型提交都更易于理解。请不要在周末穷追猛打一次性解决五个问题,而最后拖到周一再提交。
b. 需要谨记的是提交说明的撰写。写得好可以让大家协作起来更轻松。一般来说,提交说明最好限制在一行以内,50 个字符以下,简明扼要地描述更新内容,空开一行后,再展开详细注解。Git 项目本身需要开发者撰写详尽注解,包括本次修订的因由,以及前后不同实现之间的比较,我们也该借鉴这种做法。
c. .gitignore文件(可以手动在项目下创建该文件),把要忽略的文件名填进去,Git就会自动忽略这些文件;
忽略文件的原则是:
1.忽略操作系统自动生成的文件,比如缩略图等;
2.忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;
3.忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。
注:.gitignore文件只对还没有加入版本管理的文件起作用,如果之前已经用git把这些文件纳入了版本库,就不起作用了
解决方法:需要在git库中删除该文件,并更新。
3.4 Git push
项目右键team->remote->push(将项目提交到远程仓库)
点击Next
注:如果勾选force update,则表示覆盖提交,请勿勾选
点击Next
如果在提交时有红色冲突提示,如下图:
此时必须先更新,解决掉冲突后再提交
如果没有冲突,点击Finish
3.5 Git pull
如果项目要提交到远程仓库,应先从远程仓库拉取更新:team->pull,如果没有冲突,进行push;若有冲突,要先解决冲突后再进行提交;
解决冲突:
冲突的地方一般使用“<<<<”,“======”,“>>>>>”标记出不同分支的内容,这种情况需要熟悉这段代码,最好是原作者坐在一起共同修改,将修改好的文件,右键点击此冲突文件,选择Team -> Add to index再次将文件加入索引控制,此时文件已经不是冲突状态,并且可以进行commit并push到服务器端
3.6 创建分支
项目名称右键team->Switch to -> new Branch
分支的命名规则使用小驼峰式命名法,不要使用特殊字符,不要使用点。
3.7 Git merge
项目名称右键team->merge
由于master和dev分支都对同一个文件进行了修改,所以点击“Merge”按钮时,会弹出以下提示框:
选择将合并结果输入的文件;任何包含未解决冲突的文件都会以未合并(unmerged)的状态列出。Git 会在有冲突的文件里加入标准的冲突解决标记,可以通过它们来手工定位并解决这些冲突。
在实际开发中,我们应该按照几个基本原则进行分支管理:
首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;
你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。
master分支是主分支,因此要时刻与远程同步;
dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;
如果为修改一个bug,可以创建本地分支,就没必要推到远程了,修复后,合并分支,然后将临时分支删除即可。
注:Eclipse中新建的工程名称必须与GitLab中的工程名相同,才能成功push到远程服务器上
四、git 命令说明
请参考:https://gitref.org/zh/
五、代码统计
统计某段时间内添加或修改的代码行数(将项目代码更新到本地,使用git bash进入项目目录下,执行以下命令)
git log –since=1.weeks.ago –until=today –stat | perl -ne ‘END{print c}c+=1if/(\d+)insertions/;′统计某段时间内删除的代码行数gitlog–since=1.weeks.ago–until=today–stat|perl?ne‘ENDprint$cc+=$1 if/(\d+) deletion/;’