参考blog:https://blog.csdn.net/liumiaocn/article/details/73468806
1、gitlab安装
之前有一篇常规安装gitlab的文章,有需要的可以看那个,这次试用docker搭建一个gitlab,暂不使用加速器
cd /etc/yum.repos.d/ wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum -y install docker-ce sudo systemctl daemon-reload sudo systemctl restart docker docker run --detach \ --hostname gitlab.centos.com \ --publish 443:443 --publish 80:80 --publish 2222:22 \ --name gitlab \ --restart always \ --volume /docker/gitlab/config:/etc/gitlab \ --volume /docker/gitlab/logs:/var/log/gitlab \ --volume /docker/gitlab/data:/var/opt/gitlab \ docker.io/gitlab/gitlab-ce
2、sshkey的设定
2.1、客户端生成key
使用ssh-keygen,一路enter,可以生成缺省的rsa方式的sshkey。
[root@localhost ~]# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/root/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:RdeWapW8fkVyhy758pS5hlA0AblbGvq7LTu5kj7YjkI root@localhost.localdomain The key's randomart image is: +---[RSA 2048]----+ | ooo+ + | | ...o X +| | .o B =.| | .o B o .| | S. B + o.| | E . + . * .| | . o o o = o | | . ..= =.. + | | ..ooo=B.. | +----[SHA256]-----+ [root@localhost ~]#
生成文件内容说明
/root/.ssh/id_rsa rsa私钥
/root/.ssh/id_rsa.pub rsa公钥
2.2、设定gitlab
将上述生成的rsa公钥内容拷到gitlab中,公钥信息如下:
[root@gitlab ~]# cat /root/.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCl6CDWYl2C0bWFhc3HhkiORLgrBTgT+YvEtMXngHqRMWwMWZ7iIXjbrib+3y4VSpMBfdOf4O32ZdGu2mEezYUDU9VZdvxXv3br8skBzVPbbWUEZuwwty/O44WeJko35yfiq4EbkdSnNNBSujKua1JUqz0wdNw6zhfcOpGxeKg2VRA3nkuVExwBkeTkIufT1CXeL1yuKcX6V+PK3Eany1tVTHHYUonQCa+kee01nwXIyJTWuQ4YEH/yZLaEJcFO9fym2VcYjTD2yOU80O21scF3x7eo8bxn6KwPny34Z7JmLUD19gDgJzUI6taBknOYjpwxUaHS5XRcnlzhvmaf0yIT root@localhost.localdomain [root@gitlab ~]#
2.3 gitlab登录之后,profile settings -> ssh keys,添加ssh key
2.4、验证
出现”Welcome to Gitlab, xxxx”的信息表示连接OK了。
[root@gitlab ~]# ssh -T git@10.155.0.92 Welcome to GitLab, @root! [root@gitlab ~]#
3、创建项目
3.1 客户端操作内容如下:
[root@gitlab ~]# git config --global user.name "huangyanqi" [root@gitlab ~]# git config --global user.email "573143775@qq.com"
3.2、创建第一个git仓库
使用git add/commit命令之后即可将本地内容push到remote
[root@gitlab ~]# cd /usr/local/src/ [root@gitlab src]# ll 总用量 0
#克隆web仓库 [root@gitlab src]# git clone git@10.155.0.92:root/web.git 正克隆到 'web'... warning: 您似乎克隆了一个空版本库。
#添加一个文件 [root@gitlab src]# cd web/ [root@gitlab web]# echo "123-123-123" > 1.txt
#提交至本地暂存区 [root@gitlab web]# git add *
#查看提交状态 [root@gitlab web]# git status # 位于分支 master # # 初始提交 # # 要提交的变更: # (使用 "git rm --cached <file>..." 撤出暂存区) #这条命令可以删除已经提交至暂存区的文件 # # 新文件: 1.txt #
#提交本地master分支 [root@gitlab web]# git commit -m "123" [master(根提交) 32e7513] 123 1 file changed, 1 insertion(+) create mode 100644 1.txt
#提交至gitlab进行分支合并 [root@gitlab web]# git push -u origin master Counting objects: 3, done. Writing objects: 100% (3/3), 207 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To git@10.155.0.92:root/web.git * [new branch] master -> master 分支 master 设置为跟踪来自 origin 的远程分支 master。 [root@gitlab web]#
3.3、结果确认
4、分支操作
4.1、创建分支
创建一个名为nginx的分支
[root@gitlab web]# pwd /usr/local/src/web [root@gitlab web]# git branch nginx
确认分支情况,加上default的master分支,就两个,而且master分支前面的*表明当前活动分支为maste
[root@gitlab web]# git branch * master nginx
4.2、分支切换
[root@gitlab web]# git checkout nginx 切换到分支 'nginx'
当然也可以使用git checkout -b develop实现创建+切换的功能
4.3 、分支更新
[root@gitlab web]# git checkout -b nginx 切换到一个新分支 'nginx'
[root@gitlab web]# ll 总用量 4 -rw-r--r-- 1 root root 24 5月 7 13:48 README.md [root@gitlab web]# touch 111.txt [root@gitlab web]# git add * [root@gitlab web]# git commit -m "add 111.txt" [nginx 4dec5c6] add 111.txt 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 111.txt
[root@gitlab web]# git push -u origin nginx Counting objects: 4, done. Delta compression using up to 4 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 270 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 1 (delta 0) remote: remote: To create a merge request for nginx, visit: remote: http://10.155.0.92/root/web/merge_requests/new?merge_request%5Bsource_branch%5D=nginx remote: To git@10.155.0.92:root/web.git * [new branch] nginx -> nginx 分支 nginx 设置为跟踪来自 origin 的远程分支 nginx。
结果确认
4.4、切换回master
4.5、合并操作
使用no-ff选项进行合并可以将comment一起转移,能够清晰的看出从哪儿来,做了哪些改变。 所以一般来说使用no-ff在管理起来更加方便。
查看提交历史方法
[root@gitlab web]# git log commit 3693ff92e086e1971a7886b9acd516a8872609bb Author: Administrator <admin@example.com> Date: Tue May 7 13:46:47 2019 +0800 Add README.md
merge操作进行合并
4.6、 push操作
push之后就完成了将分支的内容合并回master的全部操作。
[root@gitlab web]# git push origin master Counting objects: 1, done. Writing objects: 100% (1/1), 227 bytes | 0 bytes/s, done. Total 1 (delta 0), reused 0 (delta 0) To git@10.155.0.92:root/web.git 3693ff9..681feb5 master -> master
4.7、删除分支
[root@gitlab web]# git push origin --delete nginx To git@10.155.0.92:root/web.git - [deleted] nginx
注释:此时在gitlab上是已经看不出来,但在客户端使用 git brach 还是能看见本地分支的。
删除一个项目: