day76 git和cicd

40 阅读7分钟

day76 git和cicd

开始学习自动化构建系统之一,git

版本控制系统
  1. 什么是'版本控制系统',我为什么要关心它
  2. 版本控制是一种记录一个或者若干个内容的变化,以便将来查阅特定版本的修订情况的系统。

自己本地怎么管理文件的

1.许多人习惯赋值整个项目的保存不同的版本,或许话会加上备份的时间以表示区别
2. 这么做的好处是就是简单,一不小心就会出现错误。

/code/hello.sh

/code/index.html

/code/yzk.json

/code/hello/加油.txt


# 当你学习了git 工具以后,对于linux的源码的管理,配置的文件管理。
# 可以用在你自己的Windows机器上
# word文档版的管理
# execel文档
# markdown笔记,版本的管理,都可以通过git实现多个版本的管理
​
历史版本的回退

例如nginx配置的文件多人的修改

image-20250507170134381.png

总结

改了什么,改错了,到底是谁改动

发生了什么变化,谁也不知道。???

新版本的控制

image-20250507170846057.png

*git*工具,底层实现了对文件元素进行,多版本管理

git 命令

什么是ci/cd ,

ci---> 持续集成,cd--->持续部署

在实际的软件开发中,通常会出现两种场景

  1. 现有大的一个电商平台需要开发,由于电商的平台众多,此时就需要不同的开发人员开发不同的模块。
  2. 最后把所有人的代码集中到一个系统中。最后上线
  3. 随着时间的推移,无论是修复bug还是开发新的功能,后续都要对系统进行不断地更新,迭代。

image-20250507172420449.png

  1. 每一个地组件,都是由不同地人去开发
  2. 这些一个一个地组件,合并到一块
  3. 打包成一个源码文件,交给运维去部署

持续地集成,频繁的将代码集成到主干(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玩法的流程

image-20250507193825596

本地已经写好了代码,需要用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
​

工作区----添加到了暂存区------再到本地仓库

image-20220714151605274

image-20250507195539840

文件发生了变化

image-20250507200351420


从零建立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 第一次提交
​

image-20250507201732186

# 回到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

在工作的文件夹只有两种状态

  1. 未跟踪
  2. 已经跟踪

执行 git add 表示添加未被git跟踪的文件,用git查看状态。