day76 git&ci/cd
day76 git和cicd
开始学习自动化构建系统之一,git
版本控制系统
- 什么是'版本控制系统',我为什么要关心它
- 版本控制是一种记录一个或者若干个内容的变化,以便将来查阅特定版本的修订情况的系统。
自己本地怎么管理文件的
1.许多人习惯赋值整个项目的保存不同的版本,或许话会加上备份的时间以表示区别
2. 这么做的好处是就是简单,一不小心就会出现错误。
/code/hello.sh
/code/index.html
/code/yzk.json
/code/hello/加油.txt
# 当你学习了git 工具以后,对于linux的源码的管理,配置的文件管理。
# 可以用在你自己的Windows机器上
# word文档版的管理
# execel文档
# markdown笔记,版本的管理,都可以通过git实现多个版本的管理
历史版本的回退
例如nginx配置的文件多人的修改

总结
改了什么,改错了,到底是谁改动
发生了什么变化,谁也不知道。???
新版本的控制

git工具,底层实现了对文件元素进行,多版本管理git 命令
什么是ci/cd ,
ci---> 持续集成,cd--->持续部署
在实际的软件开发中,通常会出现两种场景
- 现有大的一个电商平台需要开发,由于电商的平台众多,此时就需要不同的开发人员开发不同的模块。
- 最后把所有人的代码集中到一个系统中。最后上线
- 随着时间的推移,无论是修复bug还是开发新的功能,后续都要对系统进行不断地更新,迭代。

- 每一个地组件,都是由不同地人去开发
- 这些一个一个地组件,合并到一块
- 打包成一个源码文件,交给运维去部署
持续地集成,频繁的将代码集成到主干(master),如此地工作
进行源码版本管理地软件,git
- git 工具,所有互联网必备的工具
GIT分布式版本的控制系统
分布式版本的控制,没有中央服务器地概念,每一个人都有自己的版本,因此每个人在工作的时候不需要联网,版本库本地即可管理。
既然每一人都是完整的版本库,同事之间如果需要协同的开发,就需要找到一个用于交换文件的“中央服务器”这个服务器不影响大家干活,只是用于交换文件的内容。
git 最强大的功能是分支的管理,远甩SVN软件。

git 理论是有无限个版本库,没有中央服务器的该来概念,不用网络也可以使用git工具
最终,将你本地的代码,推送到代码的仓库,在进行代码合并即可。
下面是个例子
1.写一个hello_world.py
2.git版本控制操作
git init .
git add .
git commit -m 'v1'
3. v2版本的提交
写一个login.py
git add .
git commit -m 'v2 登录功能'
4. v3 版本的提交
。。。。。
这个git的架构,还是有一定的理解难度的
等学完了git的实际操作,分支,远程仓库后,即可理解
休息。。。。。
git 全流程
学习git 工具为主,实践
linux安装git
yum install git -y
[root@master-61 ~]# git --version
git version 1.8.3.1
身份的设置
# 用以下的命令,设置身份即可
给git设置配置信息, --global 参数,身份信息,写入
~/.gitconfig
git config --global user.name "yzk"
git config --global user.email "yzk@qq.com"
#开启git命令的颜色支持
git config --global color.ui true
# 查看配置文件
cat ~/.gitconfig
# 查看当前机器git身份配置信息
[root@master-61 ~]# cat ~/.gitconfig
[user]
name = yzk
email = yzk@qq.com
[color]
ui = true
[root@master-61 ~]# git config --list
user.name=yzk
user.email=yzk@qq.com
color.ui=true
git 三个使用的场景
使用的时候遇见的3个场景
玩法一
本地写好了代码,需要用git去管理
git的使用的套路
1. git init . 初始化本地的仓库
2. 写好代码如 L hello.sh
3. 通过git add . 进行本地文件追踪管理,文件信息被记录到暂存取、
4. git commit -m '注释' . 将暂存区的数据,提交到local repo 本地的仓库,进行第一个版本的记录
具体的操作
[root@master-61 my_shell]#
[root@master-61 my_shell]# pwd
/root/git_learn/my_shell
[root@master-61 my_shell]# ls
hello.sh
[root@master-61 my_shell]# ls -a
. .. hello.sh
# 很显然没有被git进行管理
# 使用git进行, 从0到1管理
. ---->表示当前的文件夹
1. 初始化生成.git文件夹
[root@master-61 my_shell]# git init .
Initialized empty Git repository in /root/git_learn/my_shell/.git/
# 查看这个.git本地仓库的文件夹有什么内容
[root@master-61 my_shell]# ls .git/
branches config description HEAD hooks info objects refs
# 这个时候, /root/git_learn/my_shell
这个文件就被git管理了,
在对这个目录下的文件进行修改操作,就会被git所记录
查看git工作区的状态
[root@master-61 my_shell]# git status
# On branch master
#
# Initial commit
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# hello.sh
nothing added to commit but untracked files present (use "git add" to track)
[root@master-61 my_shell]#
# 看到说这个文件没有被跟踪
追踪文件属性
[root@master-61 my_shell]# git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#
# new file: hello.sh
#
[root@master-61 my_shell]#
#提交版本,提交第一个版本
[root@master-61 my_shell]# git commit -m 'v1 第一次提交'
[master (root-commit) bcf5415] v1 第一次提交
1 file changed, 3 insertions(+)
create mode 100644 hello.sh
用git status 查看工作区的状态是如何
此时工作区就很干净了
[root@master-61 my_shell]# git status
# On branch master
nothing to commit, working directory clean
图解git玩法的流程

本地已经写好了代码,需要用git去管理
[root@master-61 my_shell]# ll
total 4
-rw-r--r-- 1 root root 45 May 8 00:27 hello.sh
-rw-r--r-- 1 root root 0 May 8 01:11 login.sh
[root@master-61 my_shell]# git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: login.sh
#
[root@master-61 my_shell]# git commit -m 'v2增添了login.sh'
[master 30811c9] v2增添了login.sh
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 login.sh
[root@master-61 my_shell]# git log
commit 30811c9d480ee75473a41f1ab7505fbb0e513b41
Author: yzk <yzk@qq.com>
Date: Thu May 8 01:15:20 2025 +0800
v2增添了login.sh
commit bcf54152592f3f8f2756513984b0b3719f4b7448
[root@master-61 my_shell]# git status
# On branch master
nothing to commit, working directory clean
工作区----添加到了暂存区------再到本地仓库


文件发生了变化

从零建立git本地仓库,编写代码
开发,写代码,用git管理的角度读练习
运维也可以基于这个玩法,去管理配置文件的多个版本
1. 直接git init . 立即创建本地仓库(含有.git目录的一个文件夹)
2. 进入git本地仓库,开始写代码,还是一样的套路
提前查看,版本的退回,基于commit --ID切换状态
[root@master-61 my_shell]# git reflog
30811c9 HEAD@{0}: commit: v2增添了login.sh
bcf5415 HEAD@{1}: commit (initial): v1 第一次提交

# 回到i指定的提交记录id中
git reset --hard 30811c9
# 回到第一次提交的版本id中
git reset --hard bcf5415
克隆远程仓库的代码
git clone 命令
# 基于git clone 命令,直接下载一个远程仓库的代码
git clone https://gitee.com/jumpserver/jumpserver?_from=gitee_search
得到的是一个git的目录可以用git的命令
如何确定该目录是一个git的远程的仓库
1. 看看有没有 .git文件夹
2. 执行git命令试试,
最后
图解git工作流
git是实现版本的控制系统
workspace 工作区(文件夹) git init
index/stage/cached 暂存区 .git/index
repository 本地仓库 .git
remote repository 远程仓库 .git
本地仓库还没有初始化。git是不能用的
本地文件夹 git init 就完成了 本地的仓库 local repo
在工作的文件夹只有两种状态
- 未跟踪
- 已经跟踪
执行 git add 表示添加未被git跟踪的文件,用git查看状态。

浙公网安备 33010602011771号