一、介绍

GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。

GitLab拥有与Github类似的功能,它非常易于浏览提交过的版本并提供一个文件历史库。

二、安装

1.获取安装包

wget https://packages.gitlab.com/gitlab/gitlab-ce/packages/ol/7/gitlab-ce-11.9.6-ce.0.el7.x86_64.rpm
2.安装依赖包
yum install curl policycoreutils openssh-server openssh-clients postfix
3.安装gitlab
yum localinstall gitlab-ce-11.9.6-ce.0.el7.x86_64.rpm
4.配置gitlab
vim /etc/gitlab/gitlab.rb
#gitlab绑定本地IP地址或域名
external_url 'http://10.0.0.101'
#gitlab数据目录
git_data_dirs({ "default" => { "path" => "/data/gitlab-core" } })
#邮箱设置
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "gitlab@blpwdev.com"
gitlab_rails['smtp_password'] = "123456"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = 'gitlab@blpwdev.com'
5.启动服务
#重载配置文件
gitlab-ctl reconfigure
#启动gitlab
gitlab-ctl start
6.验证邮件
gitlab-rails console
Notify.test_email('收件人邮箱', '邮件标题', '邮件正文').deliver_now

7.验证

Web:访问:10.0.0.101

用户:root

密码:rootpasswd

gitlab需要云服务器配置要求 gitlab服务器性能要求_远程库

三、关闭自动注册

#我们关闭自动注册,因为我们内部使用不需要用户自己注册,由运维分配用户即可

gitlab需要云服务器配置要求 gitlab服务器性能要求_推送_02

四、添加key,做免密验证

1.在客户端创建密钥

ssh-keygen -t rsa

2.复制公钥

cat ~/.ssh/id_rsa.pub

3.在gitlab上添加公钥

gitlab需要云服务器配置要求 gitlab服务器性能要求_gitlab需要云服务器配置要求_03

gitlab需要云服务器配置要求 gitlab服务器性能要求_推送_04

注:保存后就可以拉取代码

五、备份与恢复

1.备份,默认路径:/var/opt/gitlab/backups

gitlab-rake gitlab:backup:create

2.恢复

gitlab-rake gitlab:backup:restore BACKUP=1610557313_2021_01_14_11.9.6

六、常用命令

#创建git仓库
git init
#拉取gitlab上的代码
git clone git@linux-gitlab:web/web-demo.git
#身份认证
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
#把文件添加到仓库,以便之后的提交
git add file.txt
#把文件提交到仓库
git commit -m “readme”
#查看状态
git status
#查看工作区和版本库里面最新版本的区别
git diff HEAD -- readme.txt
#把文件在工作区的修改全部撤销
git checkout -- file
#把暂存区的修改撤销掉,重新放回工作区
git reset HEAD 
#显示从最近到最远的提交日志
git log
git log --pretty=oneline
#退回上一版本(HEAD表示当前版本,HEAD^表示上一版本,HEAD^^表示上上版本,往上100个可以写成HEAD~100)
git reset --hard HEAD^
#回到退回前的版本(在退回前要备份所有版本ID,否则无法回到未来)
git reset --hard 1094a
#从版本库中删除该文件
git rm file
#关联远程库
git remote add origin git@linux-gitlab:web/web-demo.git
#把本地库的所有内容推送到远程库上
git push -u origin master
#从一个仓库或者本地的分支拉取并且整合代码
git pull
#创建dev分支并切换
git checkout -b dev
或
git branch dev
git checkout dev
或
git switch -c dev #表示创建并切换分支
git switch master #表示直接切换到已有的master分支
#查看当前分支
git branch
#合并dev分支到当前分支
git merge dev
#加上--no-ff参数就可以用普通模式合并,合并后的历史有分支
git merge --no-ff -m "merge with no-ff" dev
#删除指定分支
git branch -d dev
#把当前工作现场“储藏”起来
git stash
#查看”储藏“的工作现场
git stash list
#恢复”储藏”的工作现场
git stash apply #恢复后,stash内容并不删除,使用git stash drop删除
git stash pop #恢复的同时把stash内容也删了
#复制一个特定的提交到当前分支
git cherry-pick 54c805e2
#查看远程库的信息
git remote -v
#打一个新标签
git tag v1.0
#查看所有标签
git tag
#对指定提交打标签
git tag v0.9 
#查看指定标签
git show v0.9
#可以指定标签信息
git tag -a -m "comment"
#删除标签
git tag -d v0.1
#推送某个标签到远程
git push origin v1.0
#次性推送全部尚未推送到远程的本地标签
git push origin --tags
#远程删除,先从本地删除
git tag -d v0.9
git push origin :refs/tags/v0.9