【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…...

拒绝千篇一律,AI帮你定制独一无二的个人写真
每个女人都渴望展现最美的自己,你是否厌倦了拍出千篇一律的照片?今天,我要告诉你一个秘密,用简单三步,即可打造属于你的独一无二个人写真!文生图、蒙版换脸、图生图,三步化身超级模特࿰…...

在云服务器上安装 RabbitMQ:从零到一的最佳实践
🛠 1. RabbitMQ 简介 RabbitMQ 是一个开源的消息代理中间件,广泛应用于高并发、异步任务队列的场景中。在分布式系统架构中,RabbitMQ 可以充当消息的中转站,帮助不同服务之间进行高效的消息通信。 在这篇文章中,我们…...

【nginx】搭配okhttp 配置反向代理
nginx的默认是一个反向代理。 nginx会默认把输入的请求,转向其他的服务器执行。 这些转向的服务器与客户端发起的服务器不是同一个。 客户端只认识nginx,不知道ngiix转向何方。 正向代理修改okhttp的proxy,实际上很多代理都是正向的。 反向代理修改请求路径到nginx。 感觉还…...

Android V 广播注册和配置注意事项问题
现象 在Android V平台上,应用注册非Protected广播时,如果没有加导出flag会抛出异常导致进程crash。 E/AndroidRuntime: FATAL EXCEPTION: main java.lang.SecurityException: com.demo.myapplication: One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORT…...

深入解读Docker核心原理:Namespace资源隔离机制详解
在容器技术中,资源隔离 是容器化能够实现轻量级虚拟化的关键技术之一。通过资源隔离,容器可以拥有自己的独立环境,确保容器之间互不干扰,从而实现应用的安全和稳定。Docker作为主流的容器平台,其核心的资源隔离机制依赖…...

学习通、智慧职教刷课脚本
🐐个人主页 可惜已不在 🐋可以分享给身边有需要的人🐶 🐉有用的话就留下一个三连吧😼 目录 一.安装 脚本运行器 篡改猴 - Microsoft Edge Addons 二.安装脚本 三.扩展 一.安装 脚本运行器 安装浏览器 Microsoft E…...

SEO写作:从实战到精进的全方位指南
在数字化浪潮中,SEO不再是简单的关键词堆砌,而是成为企业品牌建设与市场拓展的核心策略。作为一名深耕SEO领域的实践者,我深知其中的门道与奥秘。今天,我将结合过往实战经验,以独特视角,带你一窥SEO写作的精…...

解决 git 不是内部或外部命令,也不是可运行的程序
目录 报错提示: 一、解决办法 1、从git官网下载windows版本的git 2、安装 3、注意事项 二、报错 1、解决 fatal: Not a git repository (or any of the parent directories): .git 问题 报错提示: 一、解决办法 Windows下配置Git: 1…...

【卷起来】VUE3.0教程-07-异步请求处理(springboot后端)
🌲 服务端接口准备 pom文件,引入mybatis/mybatis-plus相关依赖 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>&…...

初一信息科技2024指南辅助教学软件(抓包软件)
专门针对信息科技20204指南写的程序,互联网和直播等知识中包含tcp/ip和udp,三次握手等原理,需要简单明了的实验来说明,在机房中需要用抓包软件,可能需要安装windump npcap等软件非常繁琐,还需要接触保护卡&…...