项目立项-->需求调研-->需求拆解-->交给不同的开发进行开发-->测试环境测试-->部署生产环境。
开发环境:一般开发环境是指开发人员自己的电脑环境,不同语言不通的环境,比如python,go,php,java等。
测试环境:开发好的代码先要在测试环境跑通,测试环境的软件版本和生产环境一致,但是数据一般为测试数据,作用主要是测试开发好的代码各个组件之间是否能跑通。
预发布环境:比测试环境更贴近生产环境,数据更接近真实环境,与生产环境的域名不同,主要用于质量检测。
生产环境:真正面向用户的线上环境,一般只有运维有权限进行代码的部署和维护,其他人员一般没有权限。
1.上传方式不方便,scp rsync rz ftp等
2.手动部署效率低下,占用大量时间
3.如果服务器多,上线速度慢
4.手动部署容易误操作,不能保证准确率
5.出问题不好回滚,手忙脚乱
1.开发的代码持续的集成到代码仓库里就是持续集成,不用等所有人都开发完毕在合并,可以多个开发人员同时工作。
2.开发将代码提交到代码仓库,由ci服务器自动将代码拉下来进行编译,测试,然后将结果返回给开发人员。
3.持续集成的目的是可以频繁的将开发的功能进行合并,提高工作效率。
1.持续交付就是将编译开发好的代码持续的交付到测试环境进行测试。
2.在预发布环境我们可以对代码进行质量扫描和漏洞扫描,并且将测试结果返回给测试人员。
3.如果测试的代码有问题,测试人员就通知开发人员进行修复,如果没有问题则进入下一个部署环节。
1.代码测试没有问题之后就可以进入预发布环境进行进一步测试,如果预发布环境也没有问题可以通过jenkins服务器持续的部署到生产服务器
2.如果新部署的服务发现有问题,通过jenkins服务器可以快速的回滚到正常的代码。
主机名 IP 服务 内存
gitlab 10.0.0.200 Gitlab 2G
jenkins 10.0.0.201 Jenkins 1G
nexus 10.0.0.202 Nexus 2G
sonar 10.0.0.203 SonarQube 2G
web 10.0.0.7 Nginx 1G
yum install git -y
[root@gitlab ~]# git config
用法:git config [选项]
配置文件位置
--global 使用全局配置文件
--system 使用系统级配置文件
--local 使用版本库级配置文件
-f, --file <文件> 使用指定的配置文件
git config --global user.name "zhangya"
git config --global user.email "526195417@qq.com"
git config --global color.ui true
[root@gitlab ~]# git config --list
user.name=zhangya
user.email=526195417@qq.com
color.ui=true
[root@gitlab ~]# cat .gitconfig
[user]
name = zhangya
email = 526195417@qq.com
[color]
ui = true
mkdir /git_data
cd /git_data
git init
git status
[root@gitlab /git_data]# ls .git|xargs -n 1
branches #分支目录
config #定义项目的特有配置
description #描述
HEAD #当前分支
hooks #git钩子文件
info #包含一个全局排除文件
objects #存放所有数据,包含info和pack两个子文件夹
refs #存放指向数据(分支)的提交对象的指针
index #保存暂存区信息,在执行git init的时候,这个文件还没有
[root@gitlab /git_data]# touch a b c
[root@gitlab /git_data]# git status
# 位于分支 master
#
# 初始提交
#
# 未跟踪的文件:
# (使用 "git add <file>..." 以包含要提交的内容)
#
# a
# b
# c
提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)
提交a文件到暂存区
[root@gitlab /git_data]# git add a
[root@gitlab /git_data]# git status
# 位于分支 master
#
# 初始提交
#
# 要提交的变更:
# (使用 "git rm --cached <file>..." 撤出暂存区)
#
# 新文件: a
#
# 未跟踪的文件:
# (使用 "git add <file>..." 以包含要提交的内容)
#
# b
# c
查看隐藏目录
[root@gitlab /git_data]# ll .git/
总用量 20
drwxr-xr-x 2 root root 6 5月 11 12:32 branches
-rw-r--r-- 1 root root 92 5月 11 12:32 config
-rw-r--r-- 1 root root 73 5月 11 12:32 description
-rw-r--r-- 1 root root 23 5月 11 12:32 HEAD
drwxr-xr-x 2 root root 4096 5月 11 12:32 hooks
-rw-r--r-- 1 root root 96 5月 11 13:01 index # git add a 把文件提交到了暂存区
drwxr-xr-x 2 root root 20 5月 11 12:32 info
drwxr-xr-x 5 root root 37 5月 11 13:01 objects
drwxr-xr-x 4 root root 29 5月 11 12:32 refs
提交所有文件
[root@gitlab /git_data]# git add .
[root@gitlab /git_data]# git status
# 位于分支 master
#
# 初始提交
#
# 要提交的变更:
# (使用 "git rm --cached <file>..." 撤出暂存区)
#
# 新文件: a
# 新文件: b
# 新文件: c
[root@gitlab /git_data]# git rm --cached c
rm ‘c‘
[root@gitlab /git_data]# git status
# 位于分支 master
#
# 初始提交
#
# 要提交的变更:
# (使用 "git rm --cached <file>..." 撤出暂存区)
#
# 新文件: a
# 新文件: b
#
# 未跟踪的文件:
# (使用 "git add <file>..." 以包含要提交的内容)
#
# c
[root@git
方法1: 先从暂存区撤回到工作区,然后直接删除文件
[root@gitlab /git_data]# rm -f c
[root@gitlab /git_data]# git status
# 位于分支 master
#
# 初始提交
#
# 要提交的变更:
# (使用 "git rm --cached <file>..." 撤出暂存区)
#
# 新文件: a
# 新文件: b
方法2:直接同时删除工作目录和暂存区的文件
[root@gitlab /git_data]# ll
总用量 0
-rw-r--r-- 1 root root 0 5月 11 13:00 a
-rw-r--r-- 1 root root 0 5月 11 13:00 b
[root@gitlab /git_data]# git rm -f b
rm ‘b‘
[root@gitlab /git_data]# git status
# 位于分支 master
#
# 初始提交
#
# 要提交的变更:
# (使用 "git rm --cached <file>..." 撤出暂存区)
#
# 新文件: a
#
[root@gitlab /git_data]# ll
总用量 0
-rw-r--r-- 1 root root 0 5月 11 13:00 a
[root@gitlab /git_data]# git commit -m "commit a"
[master(根提交) 1153f56] commit a
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 a
[root@gitlab /git_data]# git status
# 位于分支 master
无文件要提交,干净的工作区
方法1:手动修改
[root@gitlab /git_data]# mv a a.txt
[root@gitlab /git_data]# git status
# 位于分支 master
# 尚未暂存以备提交的变更:
# (使用 "git add/rm <file>..." 更新要提交的内容)
# (使用 "git checkout -- <file>..." 丢弃工作区的改动)
#
# 删除: a
#
# 未跟踪的文件:
# (使用 "git add <file>..." 以包含要提交的内容)
#
# a.txt
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
[root@gitlab /git_data]# git rm --cached a
rm ‘a‘
[root@gitlab /git_data]# git status
# 位于分支 master
# 要提交的变更:
# (使用 "git reset HEAD <file>..." 撤出暂存区)
#
# 删除: a
#
# 未跟踪的文件:
# (使用 "git add <file>..." 以包含要提交的内容)
#
# a.txt
[root@gitlab /git_data]# git add a.txt
[root@gitlab /git_data]# git status
# 位于分支 master
# 要提交的变更:
# (使用 "git reset HEAD <file>..." 撤出暂存区)
#
# 重命名: a -> a.txt
[root@gitlab /git_data]# git commit -m "commit a.txt"
[master 42ede9c] commit a.txt
1 file changed, 0 insertions(+), 0 deletions(-)
rename a => a.txt (100%)
[root@gitlab /git_data]# git status
# 位于分支 master
无文件要提交,干净的工作区
[root@gitlab /git_data]# ll
总用量 0
-rw-r--r-- 1 root root 0 5月 11 13:00 a.txt
方法2:git修改
[root@gitlab /git_data]# git mv a.txt a
[root@gitlab /git_data]# git status
# 位于分支 master
# 要提交的变更:
# (使用 "git reset HEAD <file>..." 撤出暂存区)
#
# 重命名: a.txt -> a
[root@gitlab /git_data]# git commit -m "rename a.txt a"
[master 5c3ddba] rename a.txt a
1 file changed, 0 insertions(+), 0 deletions(-)
rename a.txt => a (100%)
[root@gitlab /git_data]# git status
# 位于分支 master
无文件要提交,干净的工作区
[root@gitlab /git_data]# echo aaaa > a
[root@gitlab /git_data]# git diff
diff --git a/a b/a
index e69de29..5d308e1 100644
--- a/a
+++ b/a
@@ -0,0 +1 @@
+aaaa
提交a到本地暂存区,用git diff查看是相同的
[root@gitlab /git_data]# git add a
[root@gitlab /git_data]# git diff
对比暂存区和本地仓库文件的不同
[root@gitlab /git_data]# git diff --cached a
diff --git a/a b/a
index e69de29..5d308e1 100644
--- a/a
+++ b/a
@@ -0,0 +1 @@
+aaaa
将暂存区文件提交到本地仓库后再对比
[root@gitlab /git_data]# git commit -m "modified a"
[master 8203c87] modified a
1 file changed, 1 insertion(+)
[root@gitlab /git_data]# git diff --cached a
查看详细信息
[root@gitlab /git_data]# git log
commit 8203c878bc30c3bd23ee977e5980232fa660ddae
Author: zhangya <526195417@qq.com>
Date: Mon May 11 13:38:22 2020 +0800
modified a
commit 5c3ddba7bc8de6b8575e77513ee9805021ffc5ef
Author: zhangya <526195417@qq.com>
Date: Mon May 11 13:26:10 2020 +0800
rename a.txt a
commit 42ede9cc10865b67e4b1e8ad58a601eadf45cd61
Author: zhangya <526195417@qq.com>
Date: Mon May 11 13:24:35 2020 +0800
commit a.txt
commit 1153f564c45678cc9d4c265a1b55f5ba7b610ac9
Author: zhangya <526195417@qq.com>
Date: Mon May 11 13:16:13 2020 +0800
commit a
查看简单的信息一行现实
[root@gitlab /git_data]# git log --oneline
8203c87 modified a
5c3ddba rename a.txt a
42ede9c commit a.txt
1153f56 commit a
显示当前的指针指向
[root@gitlab /git_data]# git log --oneline --decorate
8203c87 (HEAD, master) modified a
5c3ddba rename a.txt a
42ede9c commit a.txt
1153f56 commit a
显示具体内容的变化
[root@gitlab /git_data]# git log -p
只显示最新的内容
[root@gitlab /git_data]# git log -1
commit 8203c878bc30c3bd23ee977e5980232fa660ddae
Author: zhangya <526195417@qq.com>
Date: Mon May 11 13:38:22 2020 +0800
modified a
提交新内容bbb到文件a
[root@gitlab /git_data]# echo bbb >> a
[root@gitlab /git_data]# git add a
[root@gitlab /git_data]# git commit -m "add bbb"
[master b11e0b2] add bbb
1 file changed, 1 insertion(+)
提交新内容ccc到文件a
[root@gitlab /git_data]# echo ccc >> a
[root@gitlab /git_data]# git commit -am "add ccc"
[master 4df18d4] add ccc
1 file changed, 1 insertion(+)
查看版本号
[root@gitlab /git_data]# git log --oneline
4df18d4 add ccc
b11e0b2 add bbb
8203c87 modified a
5c3ddba rename a.txt a
42ede9c commit a.txt
1153f56 commit a
回滚到指定版本 modified a
[root@gitlab /git_data]# git reset --hard 8203c87
HEAD 现在位于 8203c87 modified a
[root@gitlab /git_data]# cat a
aaaa
此时发现回滚错了,应该回退到bbb
此时查看历史会发现并没有bbb,因为回到了过去,那时候提交bbb还没发生,所有看不到记录
[root@gitlab /git_data]# git log --oneline
8203c87 modified a
5c3ddba rename a.txt a
42ede9c commit a.txt
1153f56 commit a
我们可以使用reflog来查看总的历史记录
[root@gitlab /git_data]# git reflog
8203c87 HEAD@{0}: reset: moving to 8203c87
4df18d4 HEAD@{1}: commit: add ccc
b11e0b2 HEAD@{2}: commit: add bbb
8203c87 HEAD@{3}: commit: modified a
5c3ddba HEAD@{4}: commit: rename a.txt a
42ede9c HEAD@{5}: commit: commit a.txt
1153f56 HEAD@{6}: commit (initial): commit a
然后再指定回退到bbb版本
[root@gitlab /git_data]# git reset --hard b11e0b2
HEAD 现在位于 b11e0b2 add bbb
[root@gitlab /git_data]# cat a
aaaa
bbb
[root@gitlab /git_data]# git branch
* master
创建新分支
[root@gitlab /git_data]# git branch testing
创建新分支并切换到指定分支
[root@gitlab /git_data]# git checkout -b testing
切换到一个新分支 ‘testing‘
[root@gitlab /git_data]# git branch
master
* testing
[root@gitlab /git_data]# git log --oneline --decorate
b11e0b2 (HEAD, testing, master) add bbb
8203c87 modified a
5c3ddba rename a.txt a
42ede9c commit a.txt
1153f56 commit a
切换到testing分支
[root@gitlab /git_data]# git checkout testing
切换到分支 ‘testing‘
[root@gitlab /git_data]# git branch
master
* testing
在当前分支创建文件并提交到本地仓库
[root@gitlab /git_data]# touch test
[root@gitlab /git_data]# git add .
[root@gitlab /git_data]# git commit -m "commit test"
[testing d50853d] commit test
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 test
[root@gitlab /git_data]# ll
总用量 4
-rw-r--r-- 1 root root 9 5月 11 15:51 a
-rw-r--r-- 1 root root 0 5月 11 16:02 test
切换到master分支查看文件
[root@gitlab /git_data]# git checkout master
切换到分支 ‘master‘
[root@gitlab /git_data]# git branch
* master
testing
[root@gitlab /git_data]# ll
总用量 4
-rw-r--r-- 1 root root 9 5月 11 15:51 a
在master分支下创建文件
[root@gitlab /git_data]# touch master
[root@gitlab /git_data]# git add .
[root@gitlab /git_data]# git commit -m "commit master"
[master 6f9e2f0] commit master
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 master
[root@gitlab /git_data]# ll
总用量 4
-rw-r--r-- 1 root root 9 5月 11 15:51 a
-rw-r--r-- 1 root root 0 5月 11 16:10 master
将test和master分支合并
[root@gitlab /git_data]# git branch
* master
testing
[root@gitlab /git_data]# git merge testing
Merge made by the ‘recursive‘ strategy.
test | 0
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 test
查看提交日志
[root@gitlab /git_data]# git log --oneline --decorate
6f38df1 (HEAD, master) Merge branch ‘testing‘
6f9e2f0 commit master
d50853d (testing) commit test
b11e0b2 add bbb
8203c87 modified a
5c3ddba rename a.txt a
42ede9c commit a.txt
1153f56 commit a
查看文件
[root@gitlab /git_data]# ll
总用量 4
-rw-r--r-- 1 root root 9 5月 11 15:51 a
-rw-r--r-- 1 root root 0 5月 11 16:10 master
-rw-r--r-- 1 root root 0 5月 11 16:11 test
在master分支下编辑a文件并提交
[root@gitlab /git_data]# echo "master" >> a
[root@gitlab /git_data]# git commit -am "modified a master"
[master 38fd841] modified a master
1 file changed, 1 insertion(+)
[root@gitlab /git_data]# cat a
aaaa
bbb
master
切换到test分支下编辑文件并提交
[root@gitlab /git_data]# git checkout testing
切换到分支 ‘testing‘
[root@gitlab /git_data]# echo "testing" >> a
[root@gitlab /git_data]# git commit -am "modified a on testing branch"
[testing 71c50c8] modified a on testing branch
1 file changed, 1 insertion(+)
[root@gitlab /git_data]# cat a
aaaa
bbb
testing
切换到master分支并合并test分支,此时两个分支的文件内容是有冲突的
[root@gitlab /git_data]# git checkout master
切换到分支 ‘master‘
[root@gitlab /git_data]# git merge testing
自动合并 a
冲突(内容):合并冲突于 a
自动合并失败,修正冲突然后提交修正的结果。
此时冲突内容会自动写到文件里
[root@gitlab /git_data]# cat a
aaaa
bbb
<<<<<<< HEAD
master
=======
testing
>>>>>>> testing
要想解决冲突,我们需要手动修改文件,保留最终的文件,然后重新提交
[root@gitlab /git_data]# vim a
[root@gitlab /git_data]# cat a
aaaa
bbb
master
[root@gitlab /git_data]# git commit -am "merge testing to master"
[master 921d88e] merge testing to master
查看提交日志
[root@gitlab /git_data]# git log --oneline --decorate
921d88e (HEAD, master) merge testing to master
71c50c8 (testing) modified a on testing branch
38fd841 modified a master
6f38df1 Merge branch ‘testing‘
6f9e2f0 commit master
d50853d commit test
b11e0b2 add bbb
8203c87 modified a
5c3ddba rename a.txt a
42ede9c commit a.txt
1153f56 commit a
[root@gitlab /git_data]# git branch -d testing
已删除分支 testing(曾为 71c50c8)。
[root@gitlab /git_data]# git branch
* master
[root@gitlab /git_data]# git tag v1.0 -m "aaa bbb master testing version v1.0"
[root@gitlab /git_data]# git log --oneline
921d88e merge testing to master
71c50c8 modified a on testing branch
38fd841 modified a master
6f38df1 Merge branch ‘testing‘
6f9e2f0 commit master
d50853d commit test
b11e0b2 add bbb
8203c87 modified a
5c3ddba rename a.txt a
42ede9c commit a.txt
1153f56 commit a
[root@gitlab /git_data]# git tag -a v2.0 b11e0b2 -m "add bbb version v2.0"
[root@gitlab /git_data]# git tag
v1.0
v2.0
首先查看当前版本文件
[root@gitlab /git_data]# ll
总用量 4
-rw-r--r-- 1 root root 16 5月 11 16:36 a
-rw-r--r-- 1 root root 0 5月 11 16:33 master
-rw-r--r-- 1 root root 0 5月 11 16:11 test
回滚到指定版本
[root@gitlab /git_data]# git reset --hard v2.0
HEAD 现在位于 b11e0b2 add bbb
再次查看文件
[root@gitlab /git_data]# ll
总用量 4
-rw-r--r-- 1 root root 9 5月 11 16:52 a
git init #初始化一个目录为git版本库
git add . #将没有被管理的文件,加入git管理,添加到暂存区
git commit -m "描述" #将暂存区的文件提交到版本库中,进行版本的管理
git log #查看提交的历史记录
git reflog #查看git提交的所有历史记录
git status #查看当前的文件管理状态(已提交|未提交)
git reset --hard commitID #回退到指定的提交版本记录
原文:https://www.cnblogs.com/alaska/p/13547774.html