Git简介及GitLab使用
1、Git Bash 安装
Git使用的版本为1.9.4,由于我的服务器上的gitlab是1.7的,客户端要不服务真个版本要高才可以。
下载地址:https://git-scm.com/download
双击Git⑴.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”,以下图所示:
2、GitLab使用说明
2.1新建项目
新建项目前,先创建项目所在的组(也就是说这个项目文件是保存在哪一个组里)
1. 选择Admin area,选择Groups——New Group
2.填写组名及相干信息(Groups1定要与Teams名称1致)
3. 选择Create New Projcet
输入项目名称,同时在namespace里选择刚才创建的组
2.2创建用户
1. 选择Admin area 选择Users——New User
2.其中Name为对方的中文名(或英文或拼音,能让其他人辨认便可,例如:张3、zhangsan),Username使用邮箱的前缀(登录gitlab的用户名),Email为公司邮箱(这个依照公司规定来,不1定非得依照我这样方法)
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
如果,不存在此目录,则进行第2步操作,否则,你本机已存在ssh公钥和私钥,可以略过第2步,直接进入第3步操作。
第2步、创建1对新的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
注:这些密钥要保存好,密钥文件不要随便删除。
第3步、在web账户中添加公钥
登录web账号,点击My Profile–SSH Keys–Add new
将本机文件/C/Users/you/.ssh/id_rsa.pub使用文本编辑器打开,把文件内容copy出来,粘贴你的密钥到key输入框中
点击“Save”按钮;
第4步、测试
为了确认我们可以通过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。
如果看到下面信息,就说明1切完善!
Hi username! You’ve successfully authenticated, but git.olymtech.com does not provide shell access.
2.7另外1种管理项目的方式
第1步:创建工程,选择namespace
Namespace这个选择是用来决定这个工程所属的,可以选User为你自己,或选择组,这个会影响到后面工程的url。:
a. Global:则表示该工程所在目录是/home/git/repositories/
b. Groups:则表示该工程所在目录是/home/git/repositories/
URI: git@mygit.com:
c. Users:则表示该工程所在目录是/home/git/repositories/
URI:git@mygit.com:
工程创建好了以后需要设置Team Member,即对该工程有权限的用户
第2步:在该工程的home页的右侧有“Team Member”按钮,以下图:
第3步:点击“New Team Member”按钮,进入设置页面,以下图:
第4步:用户选择成功后,会返回前1页,显示该项目中的团队成员列表,同时在此界面还可以直接修改用户的权限,以下图:
或是Admin area – Projects –找到该工程,进入,会看到“Edit Team”的按钮
接下来的操作同上第3步
注:若A用户创建了工程P,而未将B用户放入工程P的Team中,B用户是看不到工程P的;若B用户想要对工程P履行clone、pull、push操作,必须设置B用户为Developer权限;
3、Eclispe使用说明
3.1 Eclipse Git相干配置
在使用git之前你需要配置1下用户名和邮箱,这项配置很重要,每次 Git 提交时都会援用这两条信息,说明是谁提交了更新,所以会随更新内容1起被永久纳入历史记录
Window->Preferences->Team->Git->Configuration
点击“Add Entry”,添加user.name
点击“OK”,再次点击“Add Entry”,添加user.email
为了辨认方便,1般此处的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. 请将每次提交限定于完成1次逻辑功能。并且可能的话,适当地分解为屡次小更新,以便每次小型提交都更容易于理解。请不要在周末穷追猛打1次性解决5个问题,而最后拖到周1再提交。
b. 需要谨记的是提交说明的撰写。写得好可让大家协作起来更轻松。1般来讲,提交说明最好限制在1行之内,50 个字符以下,简明扼要地描写更新内容,空开1行后,再展开详细注解。Git 项目本身需要开发者撰写详实注解,包括本次修订的因由,和前后不同实现之间的比较,我们也该鉴戒这类做法。
c. .gitignore文件(可以手动在项目下创建该文件),把要疏忽的文件名填进去,Git就会自动疏忽这些文件;
疏忽文件的原则是:
1.疏忽操作系统自动生成的文件,比如缩略图等;
2.疏忽编译生成的中间文件、可履行文件等,也就是如果1个文件是通过另外一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如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;若有冲突,要先解决冲突后再进行提交;
解决冲突:
冲突的地方1般使用“<<<<”,“======”,“>>>>>”标记出不同分支的内容,这类情况需要熟习这段代码,最好是原作者坐在1起共同修改,将修改好的文件,右键点击此冲突文件,选择Team -> Add to index再次将文件加入索引控制,此时文件已不是冲突状态,并且可以进行commit并push到服务器端
3.6 创建分支
项目名称右键team->Switch to -> new Branch
分支的命名规则使用小驼峰式命名法,不要使用特殊字符,不要使用点。
3.7 Git merge
项目名称右键team->merge
由于master和dev分支都对同1个文件进行了修改,所以点击“Merge”按钮时,会弹出以下提示框:
选择将合并结果输入的文件;任何包括未解决冲突的文件都会以未合并(unmerged)的状态列出。Git 会在有冲突的文件里加入标准的冲突解决标记,可以通过它们来手工定位并解决这些冲突。
在实际开发中,我们应当依照几个基本原则进行分支管理:
首先,master分支应当是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;
你和你的小火伴们每一个人都在dev分支上干活,每一个人都有自己的分支,时不时地往dev分支上合并就能够了。
master分支是主分支,因此要时刻与远程同步;
dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;
如果为修改1个bug,可以创建本地分支,就没必要推到远程了,修复后,合并分支,然后将临时分支删除便可。
注:Eclipse中新建的工程名称必须与GitLab中的工程名相同,才能成功push到远程服务器上
4、git 命令说明
请参考:http://gitref.org/zh/
5、代码统计
统计某段时间内添加或修改的代码行数(将项目代码更新到本地,使用git bash进入项目目录下,履行以下命令)
git log –since=1.weeks.ago –until=today –stat | perl -ne ‘END{print c}c+=