GitBash+GitLab+Eclipse使用攻略非常详细版

来源:互联网 发布:云计算的具体应用 编辑:程序博客网 时间:2024/06/04 18:37

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-keygen -t rsa -C “your_email@example.com”

这将按照你提供的邮箱地址,创建一对密钥

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 your_email@example.com

注:这些密钥要保存好,密钥文件不要随意删除。

第三步、在web账户中添加公钥

登录web账号,点击My Profile–SSH Keys–Add new

 

这里写图片描述

 

将本机文件/C/Users/you/.ssh/id_rsa.pub使用文本编辑器打开,把文件内容copy出来,粘贴你的密钥到key输入框中

 

这里写图片描述

 

点击“Save”按钮;

第四步、测试

为了确认我们可以通过SSH连接web,我们输入下面命令。输入后,会要求我们提供验证密码,输入之前创建的密码就ok了。

$ssh -T git@git.olymtech.com

你可能会看到告警信息,如下:

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:git@mygit.com:{工程名}.git

b. Groups:则表示该工程所在目录是/home/git/repositories/组名/{工程名}.git

URI: git@mygit.com:组名/{工程名}.git

c. Users:则表示该工程所在目录是/home/git/repositories/username/{工程名}.git

URI:git@mygit.com: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/;’

原创粉丝点击