gitlab介绍和安装
1.1 GitLab介绍 GitLab是利用Ruby on Rails一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。 GitLab能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。 它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找 github:为开源爱好者、企业提供的免费的代码存储分享 gitlab:是为企业提供的开源免费的私有的分布式代码仓库 git:是由linus开发的分布式版本控制系统的服务,git:还是一个gitlab 的客户端工具 1.2 Gitlab服务构成 Nginx:静态web服务器。 gitlab-shell:用于处理Git命令和修改authorized keys列表。 gitlab-workhorse: 轻量级的反向代理服务器。 logrotate:日志文件管理工具。 postgresql:数据库。 redis:缓存数据库。 sidekiq:用于在后台执行队列任务(异步执行)。 unicorn:An HTTP server for Rack applications,GitLab Rails应用是托管在这个服务器上面的。 1.4 GitLab Shell GitLab Shell有两个作用:为GitLab处理Git命令、修改authorized keys列表 当通过SSH访问GitLab Server时,GitLab Shell会: 限制执行预定义好的Git命令(git push,git pull,git annex) 调用GitLab Rails API检查权限 执行pre-receive钩子(在企业版中叫做Git钩子) 执行用户请求的动作,处理GitLab的post-receive动作 处理自定义的post-receive动作 当通过http(s)访问GitLab Server时,工作流程取决于你是从Git仓库拉取(pull)代码还是向git仓库推送(push)代码: 如果是从Git仓库拉取(pull)代码,GitLab Rails应用会全权负责处理用户鉴权和执行Git命令的工作 如果是向Git仓库推送(push)代码,GitLab Rails应用既不会进行用户鉴权也不会执行Git命令,它会把以下工作交由GitLab Shell进行处理: 调用GitLab Rails API 检查权限 执行pre-receive钩子(在GitLab企业版中叫做Git钩子) 执行你请求的动作 处理GitLab的post-receive动作 处理自定义的post-receive动作 1.5 GitLab Workhorse GitLab Workhorse是一个敏捷的反向代理。它会处理一些大的HTTP请求,比如文件上传、文件下载、Git push/pull和Git包下载。其它请求会反向代理到GitLab Rails应用,即反向代理给后端的unicorn。 1.6 git 缓存区与工作区等概念:
工作区:git clone 的代码或者开发自己编写的代码文件所在的目录,通常是代码所在的一个服务的目录名称。
暂存区:用于存储在工作区中对代码进行修改后的文件所保存的地方,使用 git add 添加。
本地仓库:用于提交存储在工作区和暂存区中改过的文件地方,使用 git commi 提交。
远程仓库:多个开发共同协作提交代码的仓库,即 gitlab 服务器,可以使用git pull 下载。
gitlab 数据保方式:
SVN 与 CVS:
每次提交的文件都单独保存,即按照文件的提交时间区分不同的版本,保存至不同的逻辑存储区域,后期恢复的时候直接基于之前版本恢复。
Gitlab:
Gitlab 与 SVN 的数据保存方式不一样,gitlab 虽然也会在内部对数据进行逻辑划分保存,但是当后期提交的数据如果和之前提交过的数据没有变化,其就直接快照之前的文件,而不是在将文件重新上传一份在保存一遍,这样既节省了空间又加快了代码提交速度
安装和使用
2. Gitlab的安装部署 2.1 方式一:下载gitlab-ce的rpm包 https://packages.gitlab.com/gitlab/gitlab-ce https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/ 要先将这个rpm包下载到本地 yum install -y gitlab-ce-11.11.8-ce.0.el7.x86_64.rpm 2.2 方式二:配置yum源 在 /etc/yum.repos.d/ 下新建 gitlab-ce.repo,写入如下内容: [gitlab-ce] name=gitlab-ce baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/ Repo_gpgcheck=0 Enabled=1 Gpgkey=https://packages.gitlab.com/gpg.key yum install -y gitlab-ce # 如果要安装指定的版本,在后面填上版本号即可 yum install -y gitlab-ce-11.11.8 # 如果安装时出现gpgkey验证错误,只需在安装时明确指明不进行gpgkey验证 yum install gitlab-ce -y --nogpgcheck 2.3 gitlab的配置 [root@localhost7A ~]# vim /etc/gitlab/gitlab.rb external_url 'http://192.168.80.100' gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.qq.com" gitlab_rails['smtp_port'] = 25 gitlab_rails['smtp_user_name'] = "348987564@qq.com" gitlab_rails['smtp_password'] = "cszrwuylffhybjea" gitlab_rails['smtp_domain'] = "qq.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = false gitlab_rails['gitlab_email_from'] = "348987564@qq.com" user["git_user_email"] = "348987564@qq.com" 修改好配置文件后,要使用 gitlab-ctl reconfigure 命令重载一下配置文件,否则不生效。 gitlab-ctl reconfigure # 重载配置文件 2.4 gitlab的配置文件路径 /etc/gitlab/gitlab.rb # 修改gitlab默认的配置文件 /etc/gitlab #配置文件目录 /run/gitlab #运行 pid 目录 /opt/gitlab #安装目录 /var/opt/gitlab #数据目录 /var/log/gitlab #日志目录 /var/opt/gitlab/backups/ # Gitlab 数据备份目录,需要使用命令备份的 /var/opt/gitlab/nginx/conf #nginx 配置文件 /etc/gitlab/gitlab-secrets.json #key 文件 /opt/gitlab/version-manifest.txt #gitlab版本信息 abc/.git/config 项目abc的信息 3. gitlab常用命令
使用 git 命令下载代码与提交代码等操作
3.1 gitlab常用命令 gitlab-rails #用于启动控制台进行特殊操作,比如修改管理员密码、打开数据库控制台( gitlab-rails dbconsole)等 gitlab-psql #用于数据库操作 gitlab-rake #数据备份恢复等数据操作 # gitlab-rake gitlab:check SANITIZE=true --trace #检查gitlab # gitlab-rake gitlab:backup:restore BACKUP=备份文件名 #数据备份 gitlab-ctl #客户端命令行操作行 # gitlab-ctl stop #停止 gitlab # gitlab-ctl start #启动 gitlab # gitlab-ctl restart #重启 gitlab # gitlab-ctl status #查看组件运行状态 # gitlab-ctl tail nginx #查看某个组件的日志 # gitlab-ctl reconfigure # 启动服务,重载配置文件 # gitlab-ctl show-config # 验证配置文件 3.2.命令说明(yum install git ) git config --global user.name “name“ #设置全局用户名 git config --global user.email xxx@xx.com #设置全局邮箱 git config --global --list #列出用户全局设置 git add index.html / . #添加指定文件、目录或当前目录下所有数据到暂存区 git commit -m “11“ #提交文件到工作区 git status #查看工作区的状态,各服务的状态。 git push #提交代码到服务器 git pull #获取代码到本地 git log #查看操作日志 vim .gitignore #定义忽略本地工作区的文件上传到gitlab git reset --hard HEAD^^ #git 版本回滚, HEAD 为当前版本,加一个^为上一个,^^为上上一个版本,也可使用:git reset --hard 5621dad git reflog # #获取每次提交的 ID,可以使用--hard 根据提交的 ID 进行版本回退 git reset --hard 5ae4b06 #回退到指定 id 的版本 git branch #查看当前所处的分支 git checkout -b develop #创建并切换到一个新分支 git checkout develop #切换分支 4.项目实例说明 Gitlab web重点说明 例:http://192.168.80.100/linux39/web1.git 1.创建用户 ,对项目访问时的账号。 2.创建组(linux39),此组并非用户使用的组,而是项目的组。 3.创建项目(web1),真正项目的名称,定义在组下面。 4.用户设置 信息密码等 5.用户的权限设置 在组中的members设置 权限包括(guest reporter developer maintainer owner) 6.关闭注册账号功能 去除master是受保护的等。 4.1.#在web页面中创建用户laomao 组java 项目web 和index.html 并分配权限。(方式一) 4.2.# 将java项目克隆下来 git clone http://192.168.80.100/java/web.git 4.3.# 初始化配置(可省略),主要提交代码中会显示谁提交的。 git config --global user.name "jack" git config --global user.email "348987564@qq.com" 4.4.# 编写第二版本并推送到gitlab cd web/ vim web/index.html git add index.html git commit -m "v2" git push 4.5.# 在web项目目录下新建一些文件,推送到gitlab mkdir app echo this is one app v1 > app/index.html git add ./* git commit -m "app v1" git push 4.5.# 工作区代码回滚,或gitlab服务器回滚 1.工作区代码回滚 cd web/ echo this is fie v3 >> web/index.html git add index.html git commit -m "v3"0 git push #上传到gitlab服务器上# echo this is fie v4 >> web/index.html git add index.html git commit -m "v4" git reset --hard HEAD^ #回滚到v3,注意现在还没有上传到gitlab服务器上。 cat index.html git push -f #一般master是受保护的,如果强推,先在gitlab服务器上去除掉protected,选择project下的setting下Repository下面的protected Branches 使用命令创建一个项目(方式二) 初始化一个新的本地仓库,此操作,每个新项目开始时执行一次即可 git init 关联远程仓库,会在.git/config配置文件中。(组和项目先创建):如何使用命令创建远程仓库? git remote add origin http://192.168.80.100/zzhz/xinpan.git 把要提交的项目复制到这个目录中并提交到缓存区 echo "linux39" >> README.md git add README.md Git全局设置 git config --global user.name "Administrator" git config --global user.email "admin@example.com" 设置本地仓库对应gitlab的用户 git config --local user.name "用户名" git config --local user.email "邮箱地址" 提交到本地仓库 git commit -m "fisrt commit" git上传本地代码到远程仓库 git push -u origin master ====================================================================================== 5.gitlab 数据备份恢复: 5.1:停止 gitlab 数据服务: gitlab-ctl stop unicorn gitlab-ctl stop sidekiq 5.2:手动备份数据: gitlab-rake gitlab:backup:create #在任意目录即可备份当前 gitlab 数据 gitlab-ctl start #备份完成后启动 gitlab 5.3:查看要恢复的文件: /var/opt/gitlab/backups/ # Gitlab 数据备份目录,需要使用命令备份的 ll /var/opt/gitlab/backups/ -rw------- 1 git git 92160 Jul 17 10:32 1635296268_2021_10_27_11.11.8_gitlab_backup.tar 5.4:执行恢复: 删除一些数据,测试能否恢复 gitlab-ctl stop unicorn gitlab-ctl stop sidekiq #恢复数据之前停止服务 gitlab-rake gitlab:backup:restore BACKUP=备份文件名,注意文件名不带“_gitlab_backup.tar” gitlab-rake gitlab:backup:restore BACKUP=1635296268_2021_10_27_11.11.8 5.5:启动服务: gitlab-ctl start sidekiq gitlab-ctl start unicorn