持续集成与持续交付(CI/CD)(1)--git的使用、搭建gitlab代码仓库

一、git的使用

1. 简介
  • git:版本控制系统,它的速度飞快,极其适合管理大项目,有着令人难以置信的非线性分支管理系统。

  • git特点:

    • 速度快
    • 简单的设计
    • 对非线性开发模式的强力支持(允许成千上万个并行开发的分支)
    • 完全分布式
    • 有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)
  • 获取 Git 仓库通常有两种方式:

    • 将尚未进行版本控制的本地目录转换为 Git 仓库。
    • 从其它服务器克隆一个已存在的 Git 仓库。比如: git clone
      参考链接:https://git-scm.com/book/zh/v2
2. 原理
  • Git 有三种状态:已提交(committed)、已修改(modified) 和 已暂存(staged)

    • 已修改表示修改了文件,但还没保存到数据库中
    • 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中
    • 已提交表示数据已经安全地保存在本地数据库中
  • 这会让我们的 Git 项目拥有三个阶段:工作区、暂存区以及 Git 目录

在这里插入图片描述

3. 本地目录转换为git仓库并使用
[root@server1 ~]# yum install -y git  #安装Git
[root@server1 ~]# mkdir demo
[root@server1 ~]# cd demo/
[root@server1 demo]# ls
[root@server1 demo]# git init   #初始化版本库
Initialized empty Git repository in /root/demo/.git/
[root@server1 demo]# l.
.  ..  .git   #.git目录是git跟踪管理版本库的,里面保存了相关更改信息,不要对这个目录中的内容进行更改
[root@server1 demo]# pwd
/root/demo
[root@server1 demo]# cd .git/
[root@server1 .git]# ls
branches  config  description  HEAD  hooks  info  objects  refs
[root@server1 .git]# cd ..
[root@server1 demo]# touch README.txt
[root@server1 demo]# git status
[root@server1 demo]# git status -s
?? README.txt
[root@server1 demo]# git add  README.txt
[root@server1 demo]# git status -s
A  README.txt

在这里插入图片描述

在这里插入图片描述

配置git用户信息(在提交更改到版本库中之前需要配置用户信息):
git config --global user.name "xxx"
git config --global user.email xxxx

检查当前文件状态:
git status
git status -s		           %简化输出

git状态总述:
$ git status -s
 M README        %已经在版本库中的文件做了更改但未add(添加)
MM Rakefile      %文件第二次更改且未添加到暂存区(左边的M表示暂存区的数据没有提交,右边的M表示工作区又修改了同样的文件)
A  lib/git.rb    %文件创建完后未更改直接添加到暂存区,但未提交
M  lib/simplegit.rb  %已经在版本库中的文件文件做完更改后添加到暂存区但未提交
?? LICENSE.txt      %文件创建完后未添加到暂存区

注意:暂存区也相当于在版本库中
[root@server1 demo]# git config --global user.name "westos"
[root@server1 demo]# git config --global user.email  "ddddd@westos.org"
[root@server1 demo]# git commit -m "add file"
[root@server1 demo]# git log
commit b7721f515011f31a6cbdcd25aa2cdb44161e51f7
Author: westos <ddddd@westos.org>
Date:   Sun May 30 22:40:09 2021 +0800

    add file
[root@server1 demo]# git status -s
[root@server1 demo]# ls
README.txt
[root@server1 demo]# vim README.txt 
[root@server1 demo]# git status -s
 M README.txt
[root@server1 demo]# git add  README.txt
[root@server1 demo]# git status -s
M  README.txt
[root@server1 demo]# vim README.txt 
[root@server1 demo]# git status -s
MM README.txt
##右边的M是表示修改工作区的数据 左边的M是表示数据在暂存区 但未提交

[root@server1 demo]# git add  README.txt
[root@server1 demo]# git status -s
M  README.txt
[root@server1 demo]# git commit -m "update file"
[master c821753] update file
 1 file changed, 2 insertions(+)
[root@server1 demo]# git status -s
[root@server1 demo]# git log

在这里插入图片描述

在这里插入图片描述

4. 常用命令
忽略文件(当需要屏蔽某个目录及文件时,例如开发人员在编译代码时会产生临时文件,这些就需要忽略)
$ cat .gitignore
.*		    %忽略所有隐藏文件
/test		%只忽略当前目录下的test文件
build/		%忽略任何目录下名为 build 的文件夹

[root@server1 demo]# mkdir .dir
[root@server1 demo]# cd .dir/
[root@server1 .dir]# ls
[root@server1 .dir]# touch file
[root@server1 .dir]# cd ..
[root@server1 demo]# git status -s
?? .dir/
[root@server1 demo]# touch .file2
[root@server1 demo]# git status -s
?? .dir/
?? .file2
[root@server1 demo]# vim .gitignore
[root@server1 demo]# git status -s
[root@server1 demo]# vim .gitignore
[root@server1 demo]# cat .gitignore 
.*

在这里插入图片描述

[root@server1 demo]# touch test.txt
[root@server1 demo]# git add test.txt   ##跟踪新文件(将文件添加到暂存区)
[root@server1 demo]# git commit -m "add test.txt"  ##提交更新
[root@server1 demo]# git log

[root@server1 demo]# rm -f test.txt 
[root@server1 demo]# git status -s
 D test.txt   ##文件已被删除
[root@server1 demo]# git checkout -- test.txt  #撤消对文件的修改
[root@server1 demo]# git status -s
[root@server1 demo]# ls
README.txt  test.txt


查看已暂存和未暂存的修改
$ git diff

跳过使用暂存区域
$ git commit -a -m 'added new benchmarks'

在这里插入图片描述
使用checkout从版本库中恢复文件
在这里插入图片描述
通过版本回退我们可以恢复某些误删的文件:

[root@server1 demo]# git rm test.txt  ##在版本库中删除
rm 'test.txt'
[root@server1 demo]# git status -s
D  test.txt     ##现在在暂存区中
[root@server1 demo]# git commit -m "delete test.txt" #提交后无法撤销
[master c0d80f7] delete test.txt
 1 file changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 test.txt
[root@server1 demo]# git status -s

[root@server1 demo]# ls
README.txt
[root@server1 demo]# git reflog  
c0d80f7 HEAD@{0}: commit: delete test.txt
21df6af HEAD@{1}: commit: add test.txt
c821753 HEAD@{2}: commit: update file
b7721f5 HEAD@{3}: commit (initial): add file

##版本回退
[root@server1 demo]# git reset --hard 21df6af  
HEAD is now at 21df6af add test.txt
[root@server1 demo]# ls
README.txt  test.txt
[root@server1 demo]# git reflog
21df6af HEAD@{0}: reset: moving to 21df6af
c0d80f7 HEAD@{1}: commit: delete test.txt
21df6af HEAD@{2}: commit: add test.txt
c821753 HEAD@{3}: commit: update file
b7721f5 HEAD@{4}: commit (initial): add file

[root@server1 demo]# l.
.  ..  .dir  .file2  .git  .gitignore
[root@server1 demo]# ll -d .git
drwxr-xr-x 8 root root 183 May 30 23:17 .git

在这里插入图片描述
.git目录是git跟踪管理版本库的,里面保存了相关更改信息,如果把这个目录删了将会无法实现版本回退
在这里插入图片描述

5. 远程仓库使用
  • 通过上述示例我们可以看到,只有本地仓库是不够稳妥的,我们最好能将数据上传到云端进行备份,这样就可以免除后顾之忧了,需要的时候只需要将远程项目克隆到本地即可
  • 远程仓库:注册github帐号(或者是码云等国内平台,速度更快),并新建一个仓库:
    在这里插入图片描述

在这里插入图片描述

  • 通过ssh方式上传
[root@server1 ~]# ssh-keygen 
[root@server1 ~]# cd .ssh/
[root@server1 .ssh]# ls
id_rsa  id_rsa.pub
[root@server1 ~]# cd demo/
[root@server1 demo]# git remote add origin git@gitee.com:dan-2021/demo.git
[root@server1 demo]# git remote -v
origin	git@gitee.com:dan-2021/demo.git (fetch)
origin	git@gitee.com:dan-2021/demo.git (push)
[root@server1 demo]# git push -u origin master #公钥上传到远端
  • 生成本地公钥和私钥
    在这里插入图片描述
  • 关联远程仓库
    在这里插入图片描述
    在这里插入图片描述
  • 上传ssh公钥
    在这里插入图片描述
    在这里插入图片描述
  • push到远端仓库默认的master分支下
    在这里插入图片描述
  • 本地仓库文件已经上传到远端仓库
    在这里插入图片描述
  • 删除本地仓库,从远程仓库克隆即可
[root@server1 demo]# cd ..
[root@server1 ~]# rm -fr demo/
[root@server1 ~]# git clone git@gitee.com:dan-2021/demo.git
Cloning into 'demo'...
remote: Enumerating objects: 8, done.
remote: Counting objects: 100% (8/8), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 8 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (8/8), done.
[root@server1 ~]# ls
demo
[root@server1 ~]# cd demo/
[root@server1 demo]# ls
README.txt  test.txt

在这里插入图片描述

二、搭建gitlab代码仓库

利用gitlab自己搭建一个类似github那样的代码仓库
官网:https://about.gitlab.com/install/
软件下载:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/

1.gitlab安装
[root@server1 ~]# yum install -y curl policycoreutils-python openssh-server    #软件安装
[root@foundation jenkins]# scp gitlab-ce-13.2.2-ce.0.el7.x86_64.rpm 192.168.0.1:
[root@server1 ~]# ls
demo  gitlab-ce-13.2.2-ce.0.el7.x86_64.rpm
[root@server1 ~]# rpm -ivh gitlab-ce-13.2.2-ce.0.el7.x86_64.rpm
[root@server1 ~]# cd /etc/gitlab/
[root@server1 gitlab]# ls
gitlab.rb
[root@server1 gitlab]# vim gitlab.rb 
[root@server1 gitlab]# gitlab-ctl reconfigure  #重载服务
[root@server1 gitlab]# gitlab-ctl status

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.gitlab使用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 克隆远程项目到本地
[root@server1 ~]# git clone git@192.168.0.1:root/demo.git
[root@server1 ~]# cd demo/
[root@server1 demo]# ls
README.md
[root@server1 demo]# git remote -v
origin	git@192.168.0.1:root/demo.git (fetch)
origin	git@192.168.0.1:root/demo.git (push)

[root@server1 demo]# touch index.html
[root@server1 demo]# echo www.westos.org > index.html 
[root@server1 demo]# git status -s
?? index.html
[root@server1 demo]# git add index.html
[root@server1 demo]# git commit -m "add index.html"
[master ac7ea76] add index.html
 1 file changed, 1 insertion(+)
 create mode 100644 index.html
[root@server1 demo]# git status -s
[root@server1 demo]# git push -u origin master 

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值