GIT的基本介绍和部署

一、gitlab、git和github的区别

Git是版本控制系统
Github是在线的基于Git的代码托管服务,GitHub提供付费账户和免费账户,都可以创建公开的代码仓库,可以创建私有的代码仓库
Gitlab 创建免费的私人仓库

二、Git简介

1、简介

Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件
Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持

2、git的工作流程

1、克隆git资源作为工作目录 			git clone   仓库地址
2、完后修改后,将文件提交到暂存区		git add
3、再提交到版本仓库					 git commit 
4、最后提交到远程仓库					git push

在这里插入图片描述

3.git的工作区、暂存区和版本库

工作区:就是你在电脑里能看到的目录
暂存区:英文叫stage, 或index。一般存放在"git目录"下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)
版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库

在这里插入图片描述

三、git的使用

1、git的基本命令

配置用户名和邮箱(必须)
git config  --global  user.name  "用户名"
git config  --global  user.email  "邮箱"   
初始化命令  
git init

将一个文件添加到暂存区
git add   文件名

将当前目录下的文件添加到暂存区
git add .

将文件提交到版本仓库
git commit -m "描述"

查看版本日志
git log

查看暂存区的状态
git status

返回到上一个版本
git reset --hard  HEAD^				一个^代表一个版本

返回到指定的版本
git reset --hard 版本编号

从本地上传到远程仓库
git push  -u origin  分支名字   

指定远程仓库地址
git remote add origin  仓库地址

2、git的基本使用

ssh 链接:
客户机上产生公钥上传到gitlab的SSH-Keys里,git clone下载和git push上传都没问题,这种方式很安全
ssh连接github:
登录github,这是github的主页(如果没有账户需要注册)
git服务器生成密钥
ssh-keygen
cat .ssh/id_rsa.pub
    
web页面配置密钥

在这里插入图片描述

在这里插入图片描述

3、版本的穿梭

先使用 git reflog 查看版本号
每提交一个版本对应一个版本号

查看版本号
git reflog

回退到上一个版本
git reset  --hard  HEAD^

穿梭到指定版本
git reset  --hard   版本id

4、分支管理

创建分支
git branch  分支名字

查看分支
git branch     *在谁上代表在谁上面

切换分支
git checkout  分支名字				在分支上提交的,其他分支看不到

合并分支
合并给谁,在哪个分支上执行
git merge 被合并的分支

删除分支
git branch -d   分支名字

四、gitlab的部署

1、安装对应的软件

yum -y install curl openssh-server openssh-clients  cronie  policycoreutils-python

2、配置gitlab仓库(选择一个即可)

阿里云的源

vim  /etc/yum.repos.d/git.repo


[gitlab-ce]
name=gitlab-ce
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7
Repo_gpgcheck=0
Enabled=1
gpgcheck=0

清华大学的源

vim  /etc/yum.repos.d/git.repo

[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1

官方源


vim  /etc/yum.repos.d/git.repo

[runner_gitlab-ci-multi-runner]
name=runner_gitlab-ci-multi-runner
baseurl=https://packages.gitlab.com/runner/gitlab-ci-multi-runner/el/7/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/runner/gitlab-ci-multi-runner/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
[runner_gitlab-ci-multi-runner-source]
name=runner_gitlab-ci-multi-runner-source
baseurl=https://packages.gitlab.com/runner/gitlab-ci-multi-runner/el/7/SRPMS
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/runner/gitlab-ci-multi-runner/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

3、安装gitlab

yum -y install gitlab-ce

4、修改配置文件

绑定本机的IP地址或者域名

 vim /etc/gitlab/gitlab.rb

***
## GitLab URL
##! URL on which GitLab will be reachable.
##! For more details on configuring external_url see:
##! https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-theexternal-url-for-gitlab
# 没有域名,可以设置为本机IP地址
external_url 'http://10.0.1.86'
***

使用域名需要做域名解析

vim  /etc/hosts

/etc/hosts的域名要和配置文件里面的域名一致

5、初始化gitlab

 gitlab-ctl reconfigure

6、启动gitlab

 gitlab-ctl start

7、修改root用户的密码

gitlab-rails console -e production

2. 执行如下命令, 修改root密码为你想要的密码, 无需重启即可完成设置
u=User.where(id:1).first 							   # u定义为root用户
u.password='你的密码' 								   # 设置root密码, 注意需要符合密码强度
u.password_confirmation='你的密码'				 	 	# 确认当前密码
u.save! 										     # 保存操作
quit 												# 退出交互界面

8、给gitlab增加功能

1、部署https功能(证书是虚假的)
创建目录来存放证书
mkdir -p  /etc/gitlab/ssl
cd   /etc/gitlab/ssl/

生成密钥
openssl genrsa -out " 77cloud.com.key" 2048       写自己的域名

生成证书请求文件
openssl req -new -key "77cloud.com.key"   -out "77cloud.com.csr"

生成证书
openssl x509 -req -days 365 -in "77cloud.com.csr" -signkey "77cloud.com.key" -out "77cloud.com.crt"

gitlab还需要配pem证书文件

生成pem证书文件
openssl dhparam -out dhparam.pem 2048 

修改文件的权限 (证书文件的权限为600)
chmod 600   /etc/gitlab/ssl/*

修改配置文件
vim /etc/gitlab/gitlab.rb

external_url 'https://gitlab.example.com' 13行左右
 nginx['redirect_http_to_https'] = true			改成true
 nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.example.com.crt"  输入自己的证书文件
 nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.example.com.key"		输入自己的密钥文件
 # nginx['ssl_dhparam'] = "/etc/gitlab/ssl/dhparam.pem" # Path to dhparams.pem,eg. /etc/gitlab/ssl/dhparams.pem   
 
使用https克隆项目
注意事项:
需要关闭ssl安全认证
方法一:
       git config --global http.sslVerify false
方法二:
 vim  .gitconfig
 	[http]
        sslVerify = false

9、gitlab的角色

 用户角色

| 角色      | 权限说明                                                     |
| --------- | ------------------------------------------------------------ |
| Guest     | 可以创建issue、发表评论,不能读写版本库                      |
| Reporter  | 可以克隆代码,不能提交,QA、PM可以赋予这个权限               |
| Developer | 可以克隆代码、开发、提交、push,RD可以赋予这个权限           |
| Master    | 可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心RD负责人可以赋予这个权限 |
| Owner     | 可以设置项目访问权限 - Visibility Level、删除项目、迁移项目、管理组成员,开发组leader可以赋予这个权限 |

五、代码开发合并的流程

PM(项目主管/项目经理)在gitlab创建任务,分配给开发人员
开发人员领取任务后,在本地使用git clone拉取代码库
开发人员创建开发分支(git checkout -b dev),并进行开发
开发人员完成之后,提交到本地仓库(git commit )
开发人员在gitlab界面上申请分支合并请求(Merge request)
PM在gitlab上查看提交和代码修改情况,确认无误后,确认将开发人员的分支合并到主分支(master)
开发人员在gitlab上Mark done确认开发完成,并关闭
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐