【devops】devops-git之介绍以及日常使用
本站以分享各种运维经验和运维所需要的技能为主
《python零基础入门》:python零基础入门学习
《python运维脚本》: python运维脚本实践
《shell》:shell学习
《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战
《k8》从问题中去学习k8s
《docker学习》暂未更新
《ceph学习》ceph日常问题解决分享
《日志收集》ELK+各种中间件
《运维日常》运维日常
《linux》运维面试100问
《DBA》db的介绍使用(mysql、redis、mongodb...)
Git安装及基础命令使用
一、版本控制系统
1.什么是版本控制系统
记录一个或多个变化的过程,以便随时会到某个时间点 #功能: 1.记录文件的历史变化 2.可以随时回到任何一个时间点 3.多人协作开发
2.为什么要用版本控制系统
版本控制是指在软件开发过程中对各种程序代码、配置文件及说明文档等文件变更的管理,版本控制系统能够随着时间的推进记录一系列文件的变化,方便以后随时回退到某个版本
3.版本并发控制类型
1)本地版本控制系统
平时开发不使用版本控制系统的情况下,我们习惯用复制整个项目目录的方式来保存不同的版本,或许还会改名加上备份时间以示区别。这种方式需要对项目频繁进行复制,最终整个工作区会比较臃肿混乱且时间一长很难区分项目之间的差异。为了解决这个问题,人们开发了本地版本控制系统,大多都是采用某种简单的数据库来记录文件的历次更新差异。最流行的是RCS,它的工作原理是在硬盘上保存补丁集(补丁指文件修订前后的变化),通过应用所有的补丁,可以重新计算出各个版本的文件内容。本地版本控制系统一定程度上解决了手动复制粘贴代码的问题,但无法解决多人协作的问题。
2)集中式版本控制系统
集中式版本控制系统的出现是为了解决不同系统上的开发者协同开发,即多人协作的问题,主要有 CVS 和 SVN。集中式版本控制系统有一个单一的集中管理的中央服务器,保存所有文件的修订版本,由管理员管理和控制开发人员的权限,而协同工作的人们通过客户端连到中央服务器,从服务器上拉取最新的代码,在本地开发,开发完成再提交到中央服务器。
#集中式版本控制系统有许多优点: 1.操作比较简单,只需要拉取代码,开发,提交代码。 2.基本解决多人协作问题,每个人都可以从服务器拉取最新代码了解伙伴的进度。 3.同时管理员可以轻松控制各开发者的权限。 3.只需要维护中央服务器上的数据库即可。#缺点也很明显: 1.本地没有全套代码,没有版本信息,提交更新都需联网跟服务器进行交互,对网络要求较高。 2.集中式的通病:风险较大,服务器一旦宕机,所有人无法工作,服务器磁盘一旦损坏,如果没有备份将丢失所有数据。
3)分布式版本控制系统
分布式版本控制系统很好地解决了集中式版本控制系统的缺点。首先,在分布式版本控制系统中,系统保存的不是文件变化的差量,而是文件的快照,即把文件的整体复制下来保存,其次,最重要的是分布式版本控制系统是去中心化的,当你从中央服务器拉取下来代码时,拉取的是一个完整的版本库,不仅仅是一份生硬的代码,还有历史记录,提交记录等版本信息,这样即使某一台机器宕机也能找到文件的完整备份。Git 是 Linux 发明者 Linus 开发的一款分布式版本控制系统,是目前最为流行和软件开发者必须掌握的工具。
二、安装git
1.环境准备
主机 | IP | 配置 |
---|---|---|
git | 10.0.0.80 | 3G内存 |
2.基本优化
#关闭selinux和防火墙 #时间同步 [root@git ~]# ntpdate time1.aliyun.com
3.安装git
[root@git ~]# yum install -y git[root@git ~]# git config --global use global config file #使用全局的配置文件 --system use system config file #使用系统的配置文件 --local use repository config file #使用版本库的配置文件
4.创建git的用户
#配置用户 [root@git ~]# git config --global user.name "lhd" #配置用户邮箱 [root@git ~]# git config --global user.email "1240206455@qq.com" #显示语法高亮 [root@git ~]# git config --global color.ui true#查看全局配置 [root@git ~]# git config --list user.name=lhd user.email=1240206455@qq.com color.ui=true #生成了一个文件 [root@git ~]# cat .gitconfig [user]name = lhdemail = 1240206455@qq.com [color]ui = true
5.初始化git
#初始化需要工作目录 [root@git ~]# mkdir git_data#初始化 [root@git ~]# cd git_data/ [root@git git_data]# git init . Initialized empty Git repository in /root/git_data/.git/#初始化会生成多个文件 [root@git git_data]# ll .git/ total 12 drwxr-xr-x 2 root root 6 Sep 17 16:13 branches #分支目录 -rw-r--r-- 1 root root 92 Sep 17 16:13 config #配置文件 -rw-r--r-- 1 root root 73 Sep 17 16:13 description #程序使用的文件 -rw-r--r-- 1 root root 23 Sep 17 16:13 HEAD #版本指针 drwxr-xr-x 2 root root 242 Sep 17 16:13 hooks #钩子文件 drwxr-xr-x 2 root root 21 Sep 17 16:13 info #排除文件 drwxr-xr-x 4 root root 30 Sep 17 16:13 objects #存放数据的子文件 drwxr-xr-x 4 root root 31 Sep 17 16:13 refs #数据指针
三、git介绍
1.git组成
1.工作区 (workspace)就是我们当前工作空间,也就是我们当前能在本地文件夹下面看到的文件结构。初始化工作空间或者工作空间 clean 的时候,文件内容和 index 暂存区是一致的,随着修改,工作区文件在没有 add 到暂存区时候,工作区将和暂存区是不一致的。2.暂存区 (index)老版本概念也叫 Cache 区,就是文件暂时存放的地方,所有暂时存放在暂存区中的文件将随着一个 commit 一起提交到 local repository 此时 local repository 里面文件将完全被暂存区所取代。暂存区是 git 架构设计中非常重要和难理解的一部分。3.本地仓库 (local repository)git 是分布式版本控制系统,和其他版本控制系统不同的是他可以完全去中心化工作,你可以不用和中央服务器 (remote server) 进行通信,在本地即可进行全部离线操作,包括 log,history,commit,diff 等等。完成离线操作最核心是因为 git 有一个几乎和远程一样的本地仓库,所有本地离线操作都可以在本地完成,等需要的时候再和远程服务进行交互。4.远程仓库 (remote repository)中心化仓库,所有人共享,本地仓库会需要和远程仓库进行交互,也就能将其他所有人内容更新到本地仓库把自己内容上传分享给其他人。结构大体和本地仓库一样。
2.git的四种状态
#文件在不同的操作下可能处于不同的 git 生命周期1.Untracked #未跟踪1)新建的文件,还没有被git管理过2)将文件从git跟踪管理中删除,那么readme处于unstacked状态2.Staged #已暂存1)文件已经使用git add提交到暂存区2)然后在对modifed状态的文件执行git add命令,那么readme文件又变成staged状态3.Unmodified #未修改1)将处于staged状态的文件git commit到仓库,那么文件处于unmodified状态4.Modified #已修改1)如果当前文件正处于unmodified状态,然后修改工作区的文件,那么文件变为modifed状态
四、git基础命令
1.查看状态
[root@git git_data]# git status # On branch master # 暂存区数据 # # Initial commit # 未跟踪 # nothing to commit (create/ files and use "git add" to track)
2.文件操作
1)新建文件
[root@git git_data]# touch {1,2,3} [root@git git_data]# ll total 0 -rw-r--r-- 1 root root 0 Sep 17 16:38 1 -rw-r--r-- 1 root root 0 Sep 17 16:38 2 -rw-r--r-- 1 root root 0 Sep 17 16:38 3
2)提交文件
#提交文件到暂存区 [root@git git_data]# git add 1 [root@git git_data]# git status#提交所有工作区域的文件 [root@git git_data]# git add . [root@git git_data]# git status#提交暂存区文件到本地仓库 git commit -m "提交注释"
3)删除文件
1>将暂存区的文件移除
[root@git git_data]# git rm --cache 1 rm '1' [root@git git_data]# git status
2>删除工作目录的文件
[root@git git_data]# rm -rf 1 [root@git git_data]# git status
3>同时删除
#同时删除暂存区和工作区的文件 [root@git git_data]# git rm -f 2 rm '2' [root@git git_data]# git status
4)提交到仓库
#将暂存区的文件提交到仓库 [root@git git_data]# git commit -m "add new file 3" [master (root-commit) a4566ae] add new file 31 file changed, 0 insertions(+), 0 deletions(-)create mode 100644 3-m #注释#查看状态,没有可提交的内容 [root@git git_data]# git status # On branch master nothing to commit, working directory clean
5)修改文件
1>重命名
#方式一: 1.本地重命名 [root@git git_data]# mv 3 3.txt [root@git git_data]# git status2.从暂存区删除文件 [root@git git_data]# git rm --cached 3 rm '3'3.再次提交文件 [root@git git_data]# git add 3.txt [root@git git_data]# git status4.提交到本地仓库 [root@git git_data]# git commit -m "rename 3.txt"
2>同时修改
1.同时修改暂存区和工作目录的文件名字 [root@git git_data]# git mv 3.txt 3 [root@git git_data]# git status2.提交本地仓库 [root@git git_data]# git commit -m "rename 3 too"
6)对比文件
git status 只能查看区域的状态的不同,不能查看内容是否相同git diff #可以查看文件的不同# 对比工作目录和暂存区的文件 [root@git git_data]# git diff 3 diff --git a/3 b/3 index 573541a..58c9bdf 100644 --- a/3 +++ b/3 @@ -1 +1 @@ -0 +111# 对比本地仓库和暂存区的数据 [root@git git_data]# git diff --cached 3 diff --git a/3 b/3 index 573541a..58c9bdf 100644 --- a/3 +++ b/3 @@ -1 +1 @@ -0 +111
3.提交历史
当我们执行git commit后,发现代码错了,需要回滚 git任何操作都相当于做快照,我们可以恢复到任意时刻
1)查看历史
[root@git git_data]# git log commit 43f49f38976593194516ab68228faaa09b746270 Author: lhd <1240206455@qq.com> Date: Thu Sep 17 17:09:21 2020 +0800modified 3commit 90f573fa6524704cc3457cd3e3a1ccb24e5230ef Author: lhd <1240206455@qq.com> Date: Thu Sep 17 16:58:06 2020 +0800rename 3 too
2)查看简单的历史提交
[root@git git_data]# git log --oneline 43f49f3 modified 3 90f573f rename 3 too 5d61056 rename 3.txt a4566ae add new file 3
3)查看当前分支
[root@git git_data]# git log --oneline --decorate 43f49f3 (HEAD, master) modified 3 90f573f rename 3 too 5d61056 rename 3.txt a4566ae add new file 3
4)查看提交的详细信息
[root@git git_data]# git log -p
5)显示最近提交的数据
[root@git git_data]# git log --oneline -2 # 只显示两行 43f49f3 modified 3 90f573f rename 3 too
6)恢复了历史数据
1>暂存区数据取出至工作区
#从暂存区将数据取出 [root@git git_data]# git checkout -- 3
2>修改了工作区并且提交到了暂存区
# 回到上一次提交的节点(也就是本地仓库退回暂存区) [root@git git_data]# git reset HEAD 3 Unstaged changes after reset: M 3#从暂存区将数据取出(将暂存区数据取出至工作区) [root@git git_data]# git checkout -- 3 [root@git git_data]# git diff 3
3>修改了工作区并且提交到了暂存区在提交到了本地仓库
1.修改文件并一路提交到本地仓库 [root@git git_data]# echo 333 > 3 [root@git git_data]# git add 3 [root@git git_data]# git commit -m "错误的提交" [master 3044a5a] 错误的提交1 file changed, 1 insertion(+), 1 deletion(-)2.发现错误,想要回滚 #查看提交历史 [root@git git_data]# git log --oneline 3044a5a 错误的提交 43f49f3 modified 3 90f573f rename 3 too 5d61056 rename 3.txt a4566ae add new file 3 3.使用指针回到上一次提交的时间点 [root@git git_data]# git reset --hard 43f49f3 HEAD is now at 43f49f3 modified 3 [root@git git_data]# git log --oneline --decorate 43f49f3 (HEAD, master) modified 3 90f573f rename 3 too 5d61056 rename 3.txt a4566ae add new file 3 4.发现回滚错了,又看不到新提交的时间点 #查看所有的经历时间节点 [root@git git_data]# git reflog 43f49f3 HEAD@{0}: reset: moving to 43f49f3 3044a5a HEAD@{1}: commit: 错误的提交 43f49f3 HEAD@{2}: commit: modified 3 90f573f HEAD@{3}: commit: rename 3 too 5d61056 HEAD@{4}: commit: rename 3.txt a4566ae HEAD@{5}: commit (initial): add new file 3 5.回到回滚之前的时间点 [root@git git_data]# git reset --hard 3044a5a HEAD is now at 3044a5a 错误的提交 [root@git git_data]# cat 3 333
相关文章:

【devops】devops-git之介绍以及日常使用
本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》:python零基础入门学习 《python运维脚本》: python运维脚本实践 《shell》:shell学习 《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战 《k8…...
012复杂度07leetcode
视频地址:012复杂度07leetcode_哔哩哔哩_bilibili 网站叫做leetcode。那Linux我相信很多同学都听过这个网站,那这个网站干嘛用呢?这个网站是用于练习算法的一个好网站,那我们这个课程在讲解知识点过程中也会不断的去用到这个网站,…...
4.网络编程
1、目的 传播交流信息TCP:打电话UDP:发短信 2、通信协议: httpTCP/IP簇:三次握手(aba),四次挥手(abba)https 3、IP与端口 1.IP地址类:InetAddress、InetSocketAddress InetAdd…...

OpenCV GUI常用函数详解
在OpenCV的High_level GUI模组中有很多GUI函数,下面介绍几个常用的函数。 图像显示窗口相关函数 生成图像显示窗口函数nameWindow() nameWindow()函数的原型如下: 函数用以创建一个给定名的图像显示窗口(后面简单叫做图像窗口)…...

Tuxera NTFS for Mac破解版下载 Tuxera NTFS for Mac2023激活码 mac电脑ntfs磁盘软件
Tuxera NTFS for Mac是一款优秀的Mac系统完全读写软件,提供Fat32、NTFS、Exfat、mac os扩展格式的转换,稳定性好,传输速度极快。Tuxera NTFS for Mac功能丰富,能修复NTFS卷、创建NTFS磁盘映像、创建NTFS分区等等。同时软件支持所有…...
oceanbase(ob)基于备份集搭建备租户方式
一、搭建备租户方式(基于备份的方式) 注意事项:要有一个源端OB集群和目标端OB集群。 1、新建主租户(如果原来有主租户可是省略) #创建unit create resource unit ut_2c2g max_cpu2, memory_size2G, max_iops10000,l…...

Javase复习day21算法、arrays、Lamdba表达式
常见算法 查找算法 基本查找 package search;public class BasicSearchDemo1 {public static void main(String[] args) {//基本算法(顺序查找)int[] arr {131,23,57,37,95,48,57,43};System.out.println(basicSearch(arr, 43));}public static boo…...

移动硬盘无法读取?别慌!这些方法助你恢复数据!
在我们的日常工作和生活中,移动硬盘作为重要的数据存储工具,承载着珍贵资料。然而,移动硬盘无法被电脑读取的情况时有发生,令人焦急。别慌,下面为大家详细介绍恢复移动硬盘数据的有效方法。 一、检查硬件连接和驱动问题…...
Java集合面试(上)
Java集合面试(上) 集合概述 Java 集合,也叫作容器,主要是由两大接口派生而来:一个是 Collection接口,主要用于存放单一元素;另一个是 Map 接口,主要用于存放键值对 说说List,Set,Queue&#…...

Python画笔案例-046 绘制小红伞
1、绘制小红伞 通过 python 的turtle 库绘制 小红伞,如下图: 2、实现代码 绘制 小红伞,以下为实现代码: """小红伞.py """ import turtledef draw_pattern():"""画填充圆弧"&…...
使用 .NET 6 构建跨平台 Worker Service 服务:跨越平台的 C# 服务开发——解决Windows服务跨平台问题
现代软件开发中,构建跨平台的应用程序变得愈加重要。C# 和 .NET 6 的出现使得在 Windows、Linux 和 macOS 上创建背景服务变得简单而高效。在本指南中,我们将通过创建一个使用 .NET 6 的 Worker Service 来展示如何实现跨平台后台服务。 项目概述 我们…...

terminator-gnome
gnome import os#启动节点指令变量 stere"ros2 launch stereo_c start.py" utils"ros2 launch task utils.launch.py" #tab标题 stere_title"stere_driver" utils_title"utils"#一个终端界面打开5个tab cmd1f"gnome-terminal --…...
7.测试用例设计方法 + Bug
一、正交实验法 1.使用场景 因果关系比较庞大的情况下,不太适合用因果图判定表,在这种情况下,一般会采用正交实验法。 2.例子: 字符属性设置(4个条件) 字体很多 字符样式很多 …...

uniapp小程序,使用腾讯地图获取定位
本篇文章分享一下在实际开发小程序时遇到的需要获取用户当前位置的问题,在小程序开发过程中经常使用到获取定位功能。uniapp官方也提供了相应的API供我们使用。 官网地址:uni.getLocation(OBJECT)) 官网获取位置的详细介绍这里就不再讲述了,大…...
Reactive 编程-Project Reactor
Reactive 编程与 Project Reactor Reactive 编程是一种编程范式,主要用于处理异步数据流。它旨在通过声明式的编程方式处理事件驱动的非阻塞任务,特别适合于构建响应式、可扩展、高并发的应用。随着互联网应用规模的扩大和响应速度的提升需求࿰…...

splice用法
天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…...

Redis - 缓存
文章目录 目录 文章目录 1. 什么是缓存? 2. 使用Redis作为缓存 2.1 关系型数据库的缺点 3. 缓存的更新策略 3.1 定期生成 3.2 实时生成 缓存淘汰策略 4. 缓存预热, 缓存穿透, 缓存雪崩 和 缓存击穿 缓存预热 缓存穿透 缓存雪崩 缓存击穿 总结 1. 什么…...

基于SpringBoot+Vue的养老院管理系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的…...
多线程爬虫接入代理IP:高效数据抓取的秘诀
在现代网络环境中,爬虫已经成为获取信息的利器。然而,随着网站反爬措施的不断升级,单线程爬虫往往无法满足需求。多线程爬虫与代理IP的结合,不仅能提高效率,还能有效规避IP封禁问题。本文将详细探讨多线程爬虫接入代理…...
[网络][CISCO]Cisco-PIX配置详解
Cisco PIX防火墙配置指南 任何企业安全策略的一个主要部分都是实现和维护防火墙,因此防火墙在网络安全的实现当中扮演着重要的角色。防火墙通常位于企业网络的边缘,使内部网络与Internet之间或与其他外部网络互相隔离,并限制网络互访&#x…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...

python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...

听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...