持续集成-Git

DevOps是什么

是一种理念,规范过程、开发与运维共同协作的方式、工具、生产环境

DevOps能干什么

  • 自动化测试
  • 持续集成
  • 代码质量管理工具

DevOps如何实现

架构规划–>代码的存储–>构建、测试、预生产、部署、监控

Git版本控制系统

版本控制系统简介

版本控制系统是一种记录或若干个文件内容的变化
记录文件的所有历史变化
随时可恢复到任何一个历史状态
多人协作开发

Git安装

  1. 安装git,并配置用户
[root@192 ~]# yum install git
[root@192 ~]# git config --global user.name "kaifa"
#配置git使用用户
[root@192 ~]# git config --global user.email "kaifa@mail.com"
#配置git使用邮箱
[root@192 ~]# git config --global color.ui true
#配置语法高亮
[root@192 ~]# git config --list
user.name=kaifa
user.email=kaifa@mail.com
color.ui=true
  1. git初始化
[root@192 ~]# mkdir data
[root@192 data]# cd data
[root@192 data]# git init 
Initialized empty Git repository in /root/data/.git/
#初始化仓库,把一个目录初始化为版本仓库(可以是空的目录,也可以是带内容的目录)
[root@192 data]# git status #查看一个仓库的状态
# On branch master
#
# Initial commit
#
nothing to commit (create/copy files and use "git add" to track)
[root@192 data]# cd .git/
[root@192 .git]# ll
total 12
drwxr-xr-x. 2 root root   6 Jan  4 21:24 branches #分支目录
-rw-r--r--. 1 root root  92 Jan  4 21:24 config #定义项目特有的配置选项
-rw-r--r--. 1 root root  73 Jan  4 21:24 description #仅供git web程序使用
-rw-r--r--. 1 root root  23 Jan  4 21:24 HEAD #指示当前的分支
drwxr-xr-x. 2 root root 242 Jan  4 21:24 hooks #git钩子文件
drwxr-xr-x. 2 root root  21 Jan  4 21:24 info #一个全局排除文件
drwxr-xr-x. 4 root root  30 Jan  4 21:24 objects #存放所有的数据内容,有info和pack两个子文件夹
drwxr-xr-x. 4 root root  31 Jan  4 21:24 refs #存放指向数据的提交对象的指针
-rw-r--r--. 1 root root  96 Jan  4 21:38 index #暂存区刚刚开始创建时没有

git常规使用

git基础命令

[root@192 data]# git status
# On branch master
#
# Initial commit
#
nothing to commit (create/copy files and use "git add" to track)
[root@192 data]# touch a b c
[root@192 data]# git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#	a
#	b
#	c
nothing added to commit but untracked files present (use "git add" to track)

添加文件

[root@192 data]# git add a
[root@192 data]# git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#	new file:   a
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#	b
#	c

添加所有的文件到暂存区,git add .或者git add *

[root@192 data]# git add .
[root@192 data]# git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#	new file:   a
#	new file:   b
#	new file:   c
#

将c文件撤回,先撤回文件后,可以直接删除c文件

[root@192 data]# git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#	new file:   a
#	new file:   b
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#	c
[root@192 data]# rm -rf c
[root@192 data]# git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#	new file:   a
#	new file:   b
#

同时删除工作目录和暂存区的文件

[root@192 data]# git rm -f b
rm 'b'
[root@192 data]# ls
a
[root@192 data]# git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#	new file:   a
#

将暂存区的文件添加到本地仓库

[root@192 data]# git commit -m "add newfile a"
[master (root-commit) c780bfd] add newfile a
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 a

如何真正意义上通过版本控制系统管理文件
1、工作目录有文件
2、将文件添加到暂存区域
3、再通过git commit添加到本地仓库

修改文件名

[root@192 data]# git mv a a.txt
[root@192 data]# git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#	renamed:    a -> a.txt
#
[root@192 data]# git commit -m "mv a a.txt"
[master e0e9836] mv a a.txt
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename a => a.txt (100%)

git diff默认比对工作目录和暂存区有什么不同

[root@192 data]# echo 123 > a.txt 
[root@192 data]# git diff
diff --git a/a.txt b/a.txt
index e69de29..190a180 100644
--- a/a.txt
+++ b/a.txt
@@ -0,0 +1 @@
+123

git diff - -cached比对暂存区和本地仓库

[root@192 data]# git add a.txt
[root@192 data]# git diff
[root@192 data]# git diff --cached
diff --git a/a.txt b/a.txt
index e69de29..190a180 100644
--- a/a.txt
+++ b/a.txt
@@ -0,0 +1 @@
+123
[root@192 data]# git commit -m "add 123"
[master 05a3bd4] add 123
 1 file changed, 1 insertion(+)
[root@192 data]# git diff --cached

如果某个文件已经被仓库管理,如果更改此文件,直接需要一条命令提交即可

[root@192 data]# vim a.txt 
[root@192 data]# echo 789 >> a.txt 
[root@192 data]# git commit -am "add 456789"
[master 2840c4b] add 456789
 1 file changed, 2 insertions(+)

查看历史操作内容

[root@192 data]# git log
commit 2840c4b94cb8d83f923c2de576f00a4e844f38d1
Author: kaifa <kaifa@mail.com>
Date:   Tue Jan 4 22:12:35 2022 +0800

    add 456789

commit 05a3bd4b4cb74504c7d15ffc8491da9c42e93883
Author: kaifa <kaifa@mail.com>
Date:   Tue Jan 4 22:09:59 2022 +0800

    add 123

commit e0e9836d6d18b85fef02664e18a08b5047056cb8
Author: kaifa <kaifa@mail.com>
Date:   Tue Jan 4 22:01:50 2022 +0800

    mv a a.txt

commit c780bfd48400943a1ce899cd5fd48e3c76521fda
Author: kaifa <kaifa@mail.com>
Date:   Tue Jan 4 21:51:24 2022 +0800

    add newfile a

一行简单的显示commit信息

[root@192 data]# git log --oneline
2840c4b add 456789
05a3bd4 add 123
e0e9836 mv a a.txt
c780bfd add newfile a

显示当前的指针指向哪里

[root@192 data]# git log --oneline --decorate
2840c4b (HEAD, master) add 456789
05a3bd4 add 123
e0e9836 mv a a.txt
c780bfd add newfile a

回滚数据,将数据恢复到a

[root@192 data]# git reset --hard c780bfd
HEAD is now at c780bfd add newfile a
[root@192 data]# git log --oneline --decorate
c780bfd (HEAD, master) add newfile a
[root@192 data]# ll
total 0
-rw-r--r--. 1 root root 0 Jan  4 22:21 a

再回去到添加456789

[root@192 data]# git reset --hard 2840c4b
HEAD is now at 2840c4b add 456789
[root@192 data]# git log --oneline --decorate
2840c4b (HEAD, master) add 456789
05a3bd4 add 123
e0e9836 mv a a.txt
c780bfd add newfile a

查看所有的操作

[root@192 data]# git reset --hard c780bfd
HEAD is now at c780bfd add newfile a
[root@192 data]# git log --oneline --decorate
c780bfd (HEAD, master) add newfile a
[root@192 data]# git reflog
c780bfd HEAD@{0}: reset: moving to c780bfd
2840c4b HEAD@{1}: reset: moving to 2840c4b
c780bfd HEAD@{2}: reset: moving to c780bfd
2840c4b HEAD@{3}: commit: add 456789
05a3bd4 HEAD@{4}: commit: add 123
e0e9836 HEAD@{5}: commit: mv a a.txt
c780bfd HEAD@{6}: commit (initial): add newfile a

Git分支

分支是平行空间,假设为某个手机研发一个新的功能,代码已经完成了80%,但是如果这个不完整代码直接提交到git仓库中,可能会影响到其他人,再项目上可以创建一个分支,这个分支只属于你自己,其他人看不到,等代码编写完成后再与原来项目的主分支合并即可,这样保证代码不丢失,又不影响他人工作。

一般项目中保证master分支是非常稳定的,仅用于发布新版本,工作时创建不同的分支,等工作完成后合并到master分支上面。

查看当前指针的指向

[root@192 data]# git log --oneline --decorate
c780bfd (HEAD, master) add newfile a

创建新的分支

[root@192 data]# git branch testing
[root@192 data]# git branch #查看分支,*标识在哪个分支上
* master
  testing
[root@192 data]# touch aaa bbb ccc
[root@192 data]# ll
total 0
-rw-r--r--. 1 root root 0 Jan  4 22:25 a
-rw-r--r--. 1 root root 0 Jan  5 20:16 aaa
-rw-r--r--. 1 root root 0 Jan  5 20:16 bbb
-rw-r--r--. 1 root root 0 Jan  5 20:16 ccc
[root@192 data]# git add aaa
[root@192 data]# git commit -m "add aaa"
[master 80a4cb4] add aaa
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 aaa
[root@192 data]# git add bbb
[root@192 data]# git commit -m "add bbb"
[master 092226e] add bbb
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 bbb
[root@192 data]# git add ccc
[root@192 data]# git commit -m "add ccc"
[master 816b79f] add ccc
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 ccc
[root@192 data]# git log --oneline --decorate
816b79f (HEAD, master) add ccc
092226e add bbb
80a4cb4 add aaa
c780bfd (testing) add newfile a

切换到测试分支

[root@192 data]# git checkout testing
Switched to branch 'testing'
[root@192 data]# git branch
  master
* testing

删除分支

[root@192 data]# git checkout master
Switched to branch 'master'
[root@192 data]# git branch -d testing
Deleted branch testing (was c780bfd).

创建并切换到testing分支

[root@192 data]# git checkout -b testing
Switched to a new branch 'testing'
[root@192 data]# git branch
  master
* testing

在testing分支添加一个文件

[root@192 data]# touch test-ddd
[root@192 data]# git add .
[root@192 data]# git commit -m "add newfile test-ddd"
[testing fc1edfd] add newfile test-ddd
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 test-ddd
[root@192 data]# git log --oneline --decorate
fc1edfd (HEAD, testing) add newfile test-ddd
816b79f (master) add ccc
092226e add bbb
80a4cb4 add aaa
c780bfd add newfile a

在master添加一个文件

[root@192 data]# git checkout master
Switched to branch 'master'
[root@192 data]# git branch
* master
  testing
[root@192 data]# ll
total 0
-rw-r--r--. 1 root root 0 Jan  4 22:25 a
-rw-r--r--. 1 root root 0 Jan  5 20:26 aaa
-rw-r--r--. 1 root root 0 Jan  5 20:26 bbb
-rw-r--r--. 1 root root 0 Jan  5 20:26 ccc
[root@192 data]# git log --oneline --decorate
816b79f (HEAD, master) add ccc
092226e add bbb
80a4cb4 add aaa
c780bfd add newfile a
[root@192 data]# touch master-eee
[root@192 data]# git add master-eee 
[root@192 data]# git commit -am "add master-eee"
[master 7696f79] add master-eee
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 master-eee
[root@192 data]# git log --oneline --decorate
7696f79 (HEAD, master) add master-eee
816b79f add ccc
092226e add bbb
80a4cb4 add aaa
c780bfd add newfile a

在master分支中没有test分支的文件,在test分支中也没有master分支的文件,由此可见两个分支互不影响

合并testing分支到master

[root@192 data]# git merge testing
[root@192 data]# git log --oneline --decorate
35abd30 (HEAD, master) Merge branch 'testing' Merge branch 'testing'
7696f79 add master-eee
fc1edfd (testing) add newfile test-ddd
816b79f add ccc
092226e add bbb
80a4cb4 add aaa
c780bfd add newfile a
[root@192 data]# ll
total 0
-rw-r--r--. 1 root root 0 Jan  4 22:25 a
-rw-r--r--. 1 root root 0 Jan  5 20:26 aaa
-rw-r--r--. 1 root root 0 Jan  5 20:26 bbb
-rw-r--r--. 1 root root 0 Jan  5 20:26 ccc
-rw-r--r--. 1 root root 0 Jan  5 20:35 master-eee
-rw-r--r--. 1 root root 0 Jan  5 20:41 test-ddd
#删除testing分支
[root@192 data]# git branch -d testing
Deleted branch testing (was fc1edfd).

Git代码冲突合并

在master分支aaa中插入数据

[root@192 data]# git branch testing
[root@192 data]# echo master >> aaa
[root@192 data]# git commit -am "master >> aaa"
[master 2f0f900] master >> aaa
 1 file changed, 1 insertion(+)
[root@192 data]# git status
# On branch master
nothing to commit, working directory clean
[root@192 data]# cat aaa
master

在testing分支aaa中插入数据

[root@192 data]# git checkout testing
Switched to branch 'testing'
[root@192 data]# cat aaa
[root@192 data]# echo testing >> aaa
[root@192 data]# git commit -am "testing >> aaa"
[testing 70754df] testing >> aaa
 1 file changed, 1 insertion(+)
[root@192 data]# cat aaa
testing

合并分支

[root@192 data]# git merge testing
Auto-merging aaa
CONFLICT (content): Merge conflict in aaa
Automatic merge failed; fix conflicts and then commit the result.
[root@192 data]# cat aaa
<<<<<<< HEAD
master
=======
testing
>>>>>>> testing

vim手动处理aaa中的数据,重新上传

[root@192 data]# vim aaa
[root@192 data]# cat aaa
master
testing
[root@192 data]# git commit -am "merge testing"
[master cb83e8e] merge testing
[root@192 data]# git status
# On branch master
nothing to commit, working directory clean
[root@192 data]# cat aaa
master
testing

Git标签的使用

给合并testing分支上打上v1.0标签

[root@192 data]# git log --oneline
cb83e8e merge testing
70754df testing >> aaa
2f0f900 master >> aaa
35abd30 Merge branch 'testing' Merge branch 'testing'
7696f79 add master-eee
fc1edfd add newfile test-ddd
816b79f add ccc
092226e add bbb
80a4cb4 add aaa
c780bfd add newfile a
[root@192 data]# git tag -a v1.0 35abd30 -m "add testing branch v1.0"
[root@192 data]# git tag
v1.0
[root@192 data]# git show v1.0
tag v1.0
Tagger: kaifa <kaifa@mail.com>
Date:   Wed Jan 5 21:12:20 2022 +0800

add testing branch v1.0

commit 35abd3008366fa864203a080221412c129873eb5
Merge: 7696f79 fc1edfd
Author: kaifa <kaifa@mail.com>
Date:   Wed Jan 5 20:41:17 2022 +0800

    Merge branch 'testing'
    Merge branch 'testing'

回滚到v1.0

[root@192 data]# git reset --hard v1.0
HEAD is now at 35abd30 Merge branch 'testing'
[root@192 data]# git log --oneline
35abd30 Merge branch 'testing' Merge branch 'testing'
7696f79 add master-eee
fc1edfd add newfile test-ddd
816b79f add ccc
092226e add bbb
80a4cb4 add aaa
c780bfd add newfile a

对当前版本打上标签

[root@192 data]# git reset --hard cb83e8e
HEAD is now at cb83e8e merge testing
[root@192 data]# git log --oneline
cb83e8e merge testing
70754df testing >> aaa
2f0f900 master >> aaa
35abd30 Merge branch 'testing' Merge branch 'testing'
7696f79 add master-eee
fc1edfd add newfile test-ddd
816b79f add ccc
092226e add bbb
80a4cb4 add aaa
c780bfd add newfile a
[root@192 data]# git tag -a v2.0 -m "xxx"
[root@192 data]# git tag
v1.0
v2.0

删除v2.0标签

[root@192 data]# git tag -d v2.0
Deleted tag 'v2.0' (was 7126aac)
[root@192 data]# git tag
v1.0

GitHub使用

GitHab是一个Git版本库的托管服务,时全球最大的软件仓库,拥有上百万的开发者用户,也是软件开发和寻找资源的最佳途径,GitHub不仅可以托管各种Git版本仓库,还拥有了更美观的Web界面,代码文件会被共享出来。也可以购买私有库。
1、注册用户
2、配置ssh-key
3、创建项目
4、克隆项目到本地
5、推送新代码到github

登录自己的githab
在githab上创建一个公有的仓库
在这里插入图片描述
配置仓库信息,我这里其实没有勾选add readme
在这里插入图片描述
根据提示本地的仓库
在这里插入图片描述

[root@192 data]# git remote add origin02 git@github.com:Xcnnnnnnn/gitdata.git
[root@192 data]# git remote
origin02

和github做ssh免密
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

[root@192 data]# git push -u origin02 master
The authenticity of host 'github.com (20.205.243.166)' can't be established.
ECDSA key fingerprint is SHA256:p2QAMXNIC1TJYWeIOttrVc98/R1BUFWu3/LiyKgUfQM.
ECDSA key fingerprint is MD5:7b:99:81:1e:4c:91:a5:0d:5a:2e:2e:80:13:3f:24:ca.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,20.205.243.166' (ECDSA) to the list of known hosts.
Counting objects: 24, done.
Compressing objects: 100% (19/19), done.
Writing objects: 100% (24/24), 1.85 KiB | 0 bytes/s, done.
Total 24 (delta 8), reused 0 (delta 0)
remote: Resolving deltas: 100% (8/8), done.
To git@github.com:Xcnnnnnnn/gitdata.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin02.

在这里插入图片描述
如何拉取项目
在这里插入图片描述

[root@192 tmp]# git clone git@github.com:Xcnnnnnnn/gitdata.git
Cloning into 'gitdata'...
remote: Enumerating objects: 24, done.
remote: Counting objects: 100% (24/24), done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 24 (delta 8), reused 24 (delta 8), pack-reused 0
Receiving objects: 100% (24/24), done.
Resolving deltas: 100% (8/8), done.

Gitlab

安装

  1. 官网下载gitlab

https://about.gitlab.com/install/#centos-7
清华源的地址
https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/

  1. 安装依赖包
yum install -y curl policycoreutils-python openssh-server perl
  1. 安装gitlab
[root@localhost ~]# rpm -ivh gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm
  1. 配置gitlab的url
vim gitlab.rb
external_url 'https://192.168.168.133'
#修改成自己的IP
gitlab-ctl reconfigure
  1. 检查服务是否启动
[root@192 data]# gitlab-ctl status
run: gitaly: (pid 4137) 19s; run: log: (pid 3643) 70s
run: gitlab-monitor: (pid 4152) 18s; run: log: (pid 3813) 58s
run: gitlab-workhorse: (pid 4125) 19s; run: log: (pid 3470) 88s
run: logrotate: (pid 3577) 76s; run: log: (pid 3576) 76s
run: nginx: (pid 3530) 82s; run: log: (pid 3529) 82s
run: node-exporter: (pid 3723) 64s; run: log: (pid 3722) 64s
run: postgres-exporter: (pid 4172) 17s; run: log: (pid 4019) 40s
run: postgresql: (pid 3089) 132s; run: log: (pid 3088) 132s
run: prometheus: (pid 4162) 17s; run: log: (pid 3947) 46s
run: redis: (pid 2966) 138s; run: log: (pid 2965) 138s
run: redis-exporter: (pid 3895) 52s; run: log: (pid 3894) 52s
run: sidekiq: (pid 3412) 94s; run: log: (pid 3411) 94s
run: unicorn: (pid 3342) 100s; run: log: (pid 3341) 100s
gitlab-ctl status               #查看目前gitlab的程序安装目录
gitlab-ctl stop                 #停止gitlab服务
gitlab-ctl stop  nginx          #停止gitlab某个服务
gitlab-ctl reconfigure          #更改配置文件后需重新配置
/opt/gitlab/                    #gitlab程序安装目录
/var//opt/gitlab/               #gitlab数据目录
/var//opt/gitlab/ git-data      #存放仓库数据

初次登录配置

  1. 登录到gitlab界面,初次登录设置一个密码,之后输入用户名root登录
    在这里插入图片描述
    在这里插入图片描述
  2. 设置一个logo和登录信息在这里插入图片描述
    在这里插入图片描述

创建一个项目

  1. 创建一个组
    在这里插入图片描述
    设置一个名字
    在这里插入图片描述
  2. 创建一个项目
    在这里插入图片描述
    在这里插入图片描述

设置ssh-key

  1. 点击新建ssh-公钥
    在这里插入图片描述
  2. 添加key
    在这里插入图片描述

上传代码到gitlab

  1. 进入本地目录,推送文件
[root@192 data]# git remote add origin git@192.168.168.133:test/git_data.git
[root@192 data]# git push -u origin master
The authenticity of host '192.168.168.133 (192.168.168.133)' can't be established.
ECDSA key fingerprint is SHA256:2Np9pq2OINZa2270AFShbG3rCfSLZQtfyVZHW4v1RaU.
ECDSA key fingerprint is MD5:29:9e:ad:bc:b9:e6:d5:93:07:01:b0:40:07:d6:57:50.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.168.133' (ECDSA) to the list of known hosts.
Counting objects: 3, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 210 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@192.168.168.133:test/git_data.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.

在这里插入图片描述

  1. 推送新文件
[root@192 data]# touch test.txt
[root@192 data]# git add test.txt
[root@192 data]# git commit -m "add test.txt"
[master 5e66818] add test.txt
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 test.txt
[root@192 data]# git push -u origin master
Counting objects: 3, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 243 bytes | 0 bytes/s, done.
Total 2 (delta 1), reused 0 (delta 0)
To git@192.168.168.133:test/git_data.git
   f1c769c..5e66818  master -> master
Branch master set up to track remote branch master from origin.

在这里插入图片描述

新添加一个用户

  1. 关闭自动注册
    在这里插入图片描述
  2. 新建用户
    在这里插入图片描述
    在这里插入图片描述
  3. 编辑用户信息
    在这里插入图片描述
    在这里插入图片描述
  4. 登录dev用户,设置一个新密码
  5. 将dev用户添加到test组中
    进入test组
    在这里插入图片描述
  6. 查看dev用户
    在这里插入图片描述

将项目拉到本地目录

  1. dev用户添加ssh-key
  2. 复制ssh的地址
  3. 下载
[root@192 ~]# git clone git@192.168.168.133:test/git_data.git
Cloning into 'git_data'...
The authenticity of host '192.168.168.133 (192.168.168.133)' can't be established.
ECDSA key fingerprint is SHA256:2Np9pq2OINZa2270AFShbG3rCfSLZQtfyVZHW4v1RaU.
ECDSA key fingerprint is MD5:29:9e:ad:bc:b9:e6:d5:93:07:01:b0:40:07:d6:57:50.
Are you sure you want to continue connecting (yes/no)? yes    
Warning: Permanently added '192.168.168.133' (ECDSA) to the list of known hosts.
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 5 (delta 1), reused 0 (delta 0)
Receiving objects: 100% (5/5), done.
Resolving deltas: 100% (1/1), done.
  1. 创建一个新的功能,并推送
    记得git config --global设置一个全局变量
[root@192 git_data]# touch newfile.txt
[root@192 git_data]# git add newfile.txt 
[root@192 git_data]# git commit -m "add newfile.txt"
[master 039134e] add newfile.txt
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 newfile.txt
[root@192 git_data]# git push -u origin master
Counting objects: 3, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 232 bytes | 0 bytes/s, done.
Total 2 (delta 1), reused 0 (delta 0)
To git@192.168.168.133:test/git_data.git
   5e66818..039134e  master -> master
Branch master set up to track remote branch master from origin.
  1. 创建一个分支,不能直接推送到master上
[root@192 git_data]# git checkout -b dev
Switched to a new branch 'dev'
[root@192 git_data]# ll
total 0
-rw-r--r--. 1 root root 0 Jan  7 04:40 aaa
-rw-r--r--. 1 root root 0 Jan  7 04:40 bbb
-rw-r--r--. 1 root root 0 Jan  7 04:40 ccc
-rw-r--r--. 1 root root 0 Jan  7 04:40 newfile.txt
-rw-r--r--. 1 root root 0 Jan  7 04:40 test.txt
[root@192 git_data]# git branch
* dev
  master
[root@192 git_data]# git push -u origin dev
Total 0 (delta 0), reused 0 (delta 0)
remote: 
remote: To create a merge request for dev, visit:
remote:   http://192.168.168.133/test/git_data/merge_requests/new?merge_request%5Bsource_branch%5D=dev
remote: 
To git@192.168.168.133:test/git_data.git
 * [new branch]      dev -> dev
Branch dev set up to track remote branch dev from origin.

查看已经有dev分支
在这里插入图片描述

分支保护

在这里插入图片描述
测试

[root@192 git_data]# touch dddd
[root@192 git_data]# git add .
[root@192 git_data]# git commit -m "add dddd"
[master f21d4c5] add dddd
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 dddd
[root@192 git_data]# git push -u origin master
Counting objects: 3, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 216 bytes | 0 bytes/s, done.
Total 2 (delta 1), reused 0 (delta 0)
remote: GitLab: You are not allowed to push code to protected branches on this project.
To git@192.168.168.133:test/git_data.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@192.168.168.133:test/git_data.git'

代码合并

  1. 上传新的dev分支
[root@192 git_data]# git branch -d dev
[root@192 git_data]# git checkout -b dev
[root@192 git_data]# touch eeee
[root@192 git_data]# git add .
[root@192 git_data]# git commit -m "add eeee"
[dev 682a4ae] add eeee
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 eeee
[root@192 git_data]# git push -u  origin dev
Counting objects: 5, done.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 406 bytes | 0 bytes/s, done.
Total 4 (delta 2), reused 0 (delta 0)
remote: 
remote: To create a merge request for dev, visit:
remote:   http://192.168.168.133/test/git_data/merge_requests/new?merge_request%5Bsource_branch%5D=dev
remote: 
To git@192.168.168.133:test/git_data.git
   039134e..682a4ae  dev -> dev
Branch dev set up to track remote branch dev from origin.
  1. 合并代码
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  2. 登录管理员。,进入项目里
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值