一、gitlab 概念
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。
b和GitHub一样属于第三方基于Git开发的作品,免费且开源(基于MIT协议),与Github类似,可以注册用户,任意提交你的代码,添加SSHKey等等。不同的是,GitLab是可以部署到自己的服务
GitLa器上,数据库等一切信息都掌握在自己手上,适合团队内部协作开发,你总不可能把团队内部的智慧总放在别人的服务器上吧?简单来说可把GitLab看作个人版的GitHub。
1.1、gitlab与SVN 区别
- GitLab:基于 Git 的分布式版本控制系统。每个开发者的工作站都有完整的代码仓库,包括所有的历史版本和分支。开发者可以在本地进行更改,离线工作。
- SVN:集中式版本控制系统。版本库存储在中央服务器上,开发者从中央服务器检出代码,进行更改后再提交到中央服务器。每个开发者的本地副本不包含全部历史版本。
二、部署本地gitlab服务器(使用docker搭建)
虚拟机要求至少 4G 内存
1、安装 docker
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io
建议换成华为云
mkdir /etc/docker
cat > /etc/docker/daemon.json <<EOF
{"registry-mirrors": ["https://xxx.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m"}
}
EOF
systemctl daemon-reload
systemctl restart docker.service
systemctl enable docker.service
2、拉取镜像
docker pull twang2218/gitlab-ce-zh
比较大,有1G多推荐使用【前置资源】
docker load -i gitlab-ce-zh.tar
由于容器也需要使用 22 端口,需要将容器所在主机的 ssh 服务端口改为 2222
vim /etc/ssh/sshd_config
修改
Port 2222
systemctl restart sshd
退出当前 ssh 连接,再使用 2222 端口重新连接
ssh -p 2222 root@192.168.88.78
3、启动容器
docker run -d \
-h gitlab \ #指定容器中的主机名
-p 443:443 -p 80:80 -p 22:22 \
--name gitlab \ #指定容器名
--restart always \
-v /srv/gitlab/config:/etc/gitlab \ #挂载gitlab的配置文件
-v /srv/gitlab/gitlab/logs:/var/log/gitlab \ #挂载gitlab的日志文件
-v /srv/gitlab/gitlab/data:/var/opt/gitlab \ #挂载gitlab的数据
twang2218/gitlab-ce-zh:latest
------------------------------------------------------------------------
docker run -d \
-h gitlab \
-p 443:443 -p 80:80 -p 22:22 \
--name gitlab \
--restart always \
-v /srv/gitlab/config:/etc/gitlab \
-v /srv/gitlab/gitlab/logs:/var/log/gitlab \
-v /srv/gitlab/gitlab/data:/var/opt/gitlab \
twang2218/gitlab-ce-zh:latest
由于 gitlab 容器需要资源较多,需要等几分钟才能正常使用,等看到状态显示为 (healthy) 就代表已经启动了
docker ps -a
三、gitlab应用
浏览器访问:http://192.168.88.78
1、设置管理员 root 用户的新密码,注意有格式要求,这里设置成 root@123
2、使用管理员 root 用户登录(root/root@123),登录后点击页面上方的【扳手】图标进入“管理区域”
gitlab 中重要的概念:
群组(group):对应一个开发团队,比如开发部组、测试部组、运维部组等。
项目(project):对应软件项目,比如开发部开发的每一个软件项目。
成员(member):对应用户,用于将用户加入到组中,比如可将几个程序员加入到某一个软件项目组中,各自完成不同的功能模块的代码并上传,来共同完成整个软件项目。
3、创建名为 yc666的组
点击 【新建群组】
【群组路径】、【群组名称】、【描述】
【可见等级】设置成 公开
其他都保持默认值,点击 【创建群组】
4、创建自己的账户,如 yc,账户加入到 yc666组中
点击页面上方的【扳手】图标进入“管理区域”
点击 【新建用户】
【姓名】设置成 yc
【用户名】设置成 ycyc
【电子邮箱】设置成 yc@pp.com
这里密码暂不设置,其他都保持默认值,先点击 【创建用户】
创建好用户后再点击右上角的【编辑】,可在这里设置密码,,如 abc@1234
5、创建项目 myweb,授权 yc是项目的主程序员,使其具有上传代码的权限
点击页面上方的【扳手】图标进入“管理区域”
点击 【新建项目】
【项目路径】群组选项下拉选择 yc666
【项目名称】设置成 myweb
【项目描述】设置成 myweb
【可见等级】设置成 公开
点击 【创建项目】
添加单个成员到项目中
点击左边菜单【设置】->【成员】进入“项目成员”
【添加成员】中的【选择要邀请的成员】选择 yc
【选择角色权限】选择 主程序员
点击 【添加到项目】
通过在群组中添加成员,加入到项目中
点击页面上方的【群组】->【您的群组】选择 yc666
点击左边菜单【成员】
【添加成员到 yc666】选择 yc,主程序员
点击 【添加到群组】
6、使用自己创建的账户进行管理
退出当前账户,使用自己创建的账户 yc登录(ycyc/abc@1234)
第一次登录会被强制要求修改密码(ycyc/root@123),可与旧密码相同,再重新登录
3.1、git的使用
对于没有创建过 git 版本库的主机
cd /opt
git clone 表示去远程到仓库去克隆到本地计算机
git clone http://192.168.88.78/yc666/newweb.git
需要账户密码
查看一下
ls -A myweb/
.git
会发现有.git,这个才是仓库
cd newweb/
touch README.md
加载到本地工作区域
git add README.md
提交信息到远程
git commit -m "add README"
第一次需要配置
git push -u origin master
-
-u
或--set-upstream
:这个选项的作用是设置上游(upstream)分支。简单来说,它会在本地分支和远程分支之间建立一个关联,这样以后你就可以直接使用git pull
或git push
而不必指定远程仓库和分支名称了。这个关联会保存在你的 Git 配置中,使得未来的操作更加方便。 -
origin
:这是远程仓库的默认名称。当你克隆一个仓库时,Git 会自动为这个远程仓库命名为origin
。你可以通过git remote -v
命令查看所有远程仓库及其对应的 URL。 -
master
:这是你要推送的本地分支的名称,同时也是目标远程仓库中的分支名称。
对于已存在 git 版本库的主机
(1)使用 http 协议将本地软件项目代码推送到 git 服务器
cd ~/myweb/
添加一个远程仓库上传代码方式的 url 名称为 origin
git remote add origin http://192.168.88.78/yc666/newweb.git
- Git 会在你的本地仓库中添加一个名为
origin
的远程仓库,并将其 URL 设置为http://192.168.88.78/yc666/newweb.git
。之后,你就可以使用git push origin
和git pull origin
等命令来与这个远程仓库进行交互了。
查看远程仓库
git remote
推送本地代码到远程仓库
git push -u origin --all #输入账户名和密码
推送 tag 标记到远程仓库
git push -u origin --tags #输入账户名和密码
刷新页面即可看到上传的代码和对应的 tag 标记
(2)使用 ssh 免密推送代码
点击右上角的用户选项选择【设置】
点击左边菜单【SSH密钥】,再点击页面中的【generate one】查看如何生成密钥
ssh-keygen -t rsa -C "yc@yc.com" -b 4096 #一路回车
cat ~/.ssh/id_rsa.pub
将公钥拷贝到网页中的公钥文本框中,再点击【增加密钥】
查看当前的 remote 方式
git remote show origin
更换上传代码方式
git remote remove origin #删除以前的方式
添加远程仓库上传代码方式
git remote add origin git@192.168.88.78:yc666/newweb.git
git remote show origin
推送测试
echo '<h3>new line</h3>' >> index.html
git add .
git commit -m "modify index third"
创建标签
git tag v1.4
git push
git push -u origin --tags
刷新页面即可看到上传的代码和对应的 tag 标记