day76 git&ci/cd

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配置的文件多人的修改

总结

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

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

新版本的控制

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

git 命令

什么是ci/cd ,

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

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

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

  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玩法的流程

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

image

文件发生了变化

image


从零建立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

# 回到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查看状态。

image

posted @ 2025-05-07 22:29  国家一级冲浪yzk  阅读(25)  评论(0)    收藏  举报