当前位置: 首页 > news >正文

GIT | 基础操作 | 初始化 | 添加文件 | 修改文件 | 版本回退 | 撤销修改 | 删除文件

GIT | 基础操作 | 初始化 | 添加文件 | 修改文件 | 版本回退 | 撤销修改 | 删除文件

文章目录

  • GIT | 基础操作 | 初始化 | 添加文件 | 修改文件 | 版本回退 | 撤销修改 | 删除文件
    • 前言
    • 一、安装git
    • 二、git基本操作
      • 2.1 初始化git
      • 2.2 配置局部生效
      • 2.3 配置全局生效
    • 三、认识工作区、暂存区、版本库
      • 3.1 添加文件场景一
      • 3.2 查看添加的文件
      • 3.3 添加文件场景二
    • 四、修改文件
      • 4.1 查看工作区的状态
    • 五、版本回退
    • 六、撤销修改
      • 6.1 情况一:对于工作区的代码,还没有add
      • 6.2 情况二:已经add ,但没有commit
      • 6.3 情况三:已经add ,并且也commit 了
    • 七、删除文件

前言

Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。

我们这里就不多介绍这里的GIT了,百度百科和维基百科上都有很多介绍,我们这里就不再介绍,直接来演示~~

下面演示的均是Centos7.6系统,

  • 我们先来检测以下git有没有安装
git --version
  • 如果提示的是这样的就说明没有安装

在这里插入图片描述

一、安装git

  • 执行以下命令,安装git
yum instal -y git
  • 如果执行失败的话就先更新一下系统
yum update -y
  • 然后再检测是否安装成功~

在这里插入图片描述


二、git基本操作

2.1 初始化git

  • 安装好git后,我们就要创建一个本地仓库,就是要初始化一下

创建文件夹

mkdir gitcode

进入文件夹

cd gitcode/

初始化git

git init

查看是否初始化成功

ls -al

在这里插入图片描述

  • 查看隐藏文件git目录下,有什么文件~~

在这里插入图片描述

  • 我们需要设置邮箱和用户名【这里是局部生效的配置用户名和邮箱】

2.2 配置局部生效

配置用户名

git config user.name "shilin"

配置邮箱

git config user.email "intshanxi@163.com"

查看配置

git config -l

在这里插入图片描述


那我想要删除刚刚配置的,就可以执行以下命令

删除用户名

git config --unset user.name

删除邮箱

git config --unset user.email

在这里插入图片描述

2.3 配置全局生效

  • 将配置项生效所有仓库配置项

配置用户名

git config --global user.name "intshanxi"

配置邮箱

git config --global user.email "intshanxi@163.com"

查看刚刚配置的

git config -l

在这里插入图片描述

  • 那我想要删除刚刚配置的,就可以执行以下命令~

删除用户名

git config --global --unset user.name

删除邮箱

git config --global --unset user.email
  • 接下来我们就往这个仓库里生成一个文件
touch ReadMe
  • 在目前情况下,git是不能管理这个文件的~~

在这里插入图片描述


  • 我现在往git里添加了一点东西

在这里插入图片描述


三、认识工作区、暂存区、版本库

3.1 添加文件场景一

  • 我们就来看第一个步骤
git add 文件名

或者只写一个.,这个意思就是全部添加

  • 我们就来看第二个步骤
git commit -m '要描述的细节'

在这里插入图片描述

  • 创建多个文件
touch file1 file2 file3
  • 我们还可以用.来一键添加

在这里插入图片描述

3.2 查看添加的文件

  • 还可以查看最近提交的日志
git log

在这里插入图片描述

  • 我们还可以再打印的简单一点,方便观察
git log --pretty=oneline

在这里插入图片描述

  • 查看git日志后,commit后面的一串字符是(安全哈希算法)加密过的文件

在这里插入图片描述

  • 我们可以通过命令来查看这个具体提交记录
git cat-file -p fc9176efe2397e38411e1ec44b9f58be6e0cc99f

在这里插入图片描述

  • 在其中有一行tree 0e6b1780b73cd9220ec5073dc64b42f7ad4bd945
  • 然后再查看一下这个
git cat-file -p 0e6b1780b73cd9220ec5073dc64b42f7ad4bd945
  • 继续查看文件内容
git cat-file -p 8d0e41234f24b6da002d962a26c2495ea16a425f

在这里插入图片描述

3.3 添加文件场景二

git add file4
touch file5
git commit -m 'add file4'
  • 这里虽然添加了两个文件,但是只有file4添加到了暂存区,提交修改的时候只有file4发生了变化,而file5没有发生变化

在这里插入图片描述

四、修改文件

  • git其实管理的是修改,而不是文件

  • 我们先修改了ReadMe

在这里插入图片描述

4.1 查看工作区的状态

  • 我们查看当前工作区的状态
git status

在这里插入图片描述

  • 那我们想查看修改了哪些内容呢?
git diff 文件名

在这里插入图片描述

  • 这个时候我们再提交一下
git add ReadMe
  • 查看状态
git status

在这里插入图片描述

  • 这个时候就再提交
git commit -m 'add modify ReadMe file'
  • 再查看
git status

在这里插入图片描述

五、版本回退

  • 刚开始文件里的内容只有一行,后来添加了两行

  • 对于这个文件来说是有两个版本的

在这里插入图片描述

  • 这里的回退命令是git reset可以指定某一次提交的版本

  • git reset 命令语法格式为: git reset [--soft | --mixed | --hard] [HEAD]

    • –mixed 为默认选项,使⽤时可以不用带该参数。该参数将暂存区的内容退回为指定提交版本内容,工作区文件保持不变。
    • –soft 参数对于工作区和暂存区的内容都不变,只是将版本库回退到某个指定版本。
    • –hard 参数将暂存区与工作区都退回到指定版本。切记工作区有未提交的代码时不要用这个命令,因为工作区会回滚,你没有提交的代码就再也找不回了,所以使用该参数前一定要慎重。
  • HEAD 说明:
    ◦ 可直接写成 commit id,表示指定退回的版本
    ◦ HEAD 表示当前版本
    ◦ HEAD^ 上一个版本
    ◦ HEAD^^ 上上一个版本
    ◦ 以此类推…

  • 可以使用 ~数字表示:
    ◦ HEAD~0 表示当前版本
    ◦ HEAD~1 上一个版本
    ◦ HEAD^2 上上一个版本
    ◦ 以此类推…


  • 查看日志
git log --pretty=oneline
  • 回退到最初版本
git reset --hard eea6e0091277b0e3de6739d0cede91333284b6e7

在这里插入图片描述

  • 可以看到一旦回到这一次,我们后面创建的文件都会被删除
  • 我们再来看文件的内容
cat ReadMe

在这里插入图片描述

  • 查看日志
git log --pretty=oneline

在这里插入图片描述

  • 那有人说我又后悔了怎么办?
  • 想要再回退回去
  • 我们刚刚打印过这一个最新的版本我们就回退到这个版本
git reset --hard b842e9f3f8a267b0957389abae0dbc159d12fd43

在这里插入图片描述

  • 我们再来看一下当前目录下
  • 文件回来了,文件里的内容也会来了

在这里插入图片描述

  • 再来打印这个日志
  • 这个log也回来了
git log --pretty=oneline

在这里插入图片描述

  • 那我回退了最初的版本后,找不到那个字符串了怎么办?
  • 我们还有一种方法

  • 查看
git reflog

在这里插入图片描述

  • 回退版本
git reset --hard b842e9f

在这里插入图片描述

  • 这样就可以回退回去了

  • 那么这里的版本回退为什么会这么快呢?
  • 是因为有一个HEAD指针

在这里插入图片描述

六、撤销修改

  • 如果我们在我们的工作区写了很长时间代码,越写越写不下去,觉得自己写的实在是垃圾,想恢复到上一个版本。

在这里插入图片描述

6.1 情况一:对于工作区的代码,还没有add

  • 我们先对ReadMe进行修改

在这里插入图片描述

  • 我们想撤销我们的代码,我们可以重新再次编辑删除掉那一行代码,就可以了

  • 那写了很多呢?想一次性撤销,那怎么办呢?接下来我们来看~~

  • 查看修改了哪些内容

git diff ReadMe

在这里插入图片描述

  • 想要一次撤销,我们执行以下命令
git checkout -- ReadMe
  • 这里的--就是回退到最近一次add或者commit的操作

  • 我们再次打印,新增的那一行就没有了

在这里插入图片描述

6.2 情况二:已经add ,但没有commit

  • add 后还是保存到了暂存区呢?怎么撤销呢?

在这里插入图片描述

  • 让我们来回忆一下学过的git reset回退命令,该命令如果使用 --mixed 参数,可以将暂存区的内容退回为指定的版本内容,但工作区文件保持不变。那我们就可以回退下暂存区的内容了!!!
git reset HEAD ReadMe
  • HEAD代表当前版本
  • HEAD^代表上一个版本
  • HEAD^^代表上一个版本

在这里插入图片描述

  • 这个时候再进行情况一的回退
git checkout -- ReadMe

在这里插入图片描述

6.3 情况三:已经add ,并且也commit 了

  • 我们可以git reset --hard HEAD^ 回退到上一个版本!不过,这是有条件的,就是你还没有把自己的本地版本库推送到远程。还记得Git是分布式版本控制系统吗?我们后面章节会讲到远程版本库,一旦你推送到远程版本库,你就真的惨了

  • 我们先修改文件,然后添加文件【add】【commit】

  • 然后修改

git reset --hard HEAD^

在这里插入图片描述

七、删除文件

  • 删除文件
git rm file
git commit -m '记录'

在这里插入图片描述


我们这里的git基础操作就到这里了,我们后面还有一些进阶操作~~
感谢大家的收看,我们共同进步!!!

相关文章:

GIT | 基础操作 | 初始化 | 添加文件 | 修改文件 | 版本回退 | 撤销修改 | 删除文件

GIT | 基础操作 | 初始化 | 添加文件 | 修改文件 | 版本回退 | 撤销修改 | 删除文件 文章目录 GIT | 基础操作 | 初始化 | 添加文件 | 修改文件 | 版本回退 | 撤销修改 | 删除文件前言一、安装git二、git基本操作2.1 初始化git2.2 配置局部生效2.3 配置全局生效 三、认识工作区…...

HCIA-RS基础-距离矢量路由协议

前言: 动态路由协议根据寻径方式可以分为距离矢量路由协议和链路状态路由协议。本文将详细介绍距离矢量路由协议的原理,并阐述其中一个重要概念——路由环路,同时介绍如何避免路由环路的方法。通过学习本文,您将能够深入理解距离矢…...

Python与设计模式--简单工厂模式

2-Python与设计模式–简单工厂模式 一、快餐点餐系统 想必大家一定见过类似于麦当劳自助点餐台一类的点餐系统吧。在一个大的触摸显示屏上,有三类可以选择的上餐品: 汉堡等主餐、小食、饮料。当我们选择好自己需要的食物,支付完成后&#x…...

四、防火墙-NAT Server

学习防火墙之前,对路由交换应要有一定的认识 NAT Server1.1.基本原理1.2.多出口场景下的NAT Server1.3.源进源出 —————————————————————————————————————————————————— NAT Server 一般对用户提供一些可访问的…...

Rust - cargo项目里多个二进制binary crate的编译运行

目录 foo - Cargo.toml - src - - main.rs - - bin - - - other-bin.rs将除默认入口文件外待作为二进制crate处理的文件放在src/bin目录下 方法一: 命令行增加配置项 --bin xxx cargo run --bin foo // 注意! 这里是包名,不是main cargo run --bin o…...

python爬虫教程:selenium常用API用法和浏览器控制

文章目录 selenium apiwebdriver常用APIwebelement常用API 控制浏览器 selenium api selenium新版本(4.8.2)很多函数,包括元素定位、很多API方法均发生变化,本文记录以selenium4.8.2为准。 webdriver常用API 方法描述get(String url)访问目标url地址&…...

2024年天津天狮学院专升本食品质量与安全专业《分析化学》考纲

2024年天津天狮学院食品质量与安全专业高职升本入学考试《分析化学》考试大纲 一、考试性质 《分析化学》专业课程考试是天津天狮学院食品质量与安全专业高职升本入学考试 的必考科目之一,其性质是考核学生是否达到了升入本科继续学习的要求而进行的选拔性考试。《…...

2023年亚太地区数学建模大赛 C 题

我国新能源电动汽车的发展趋势 新能源汽车是指以先进技术原理、新技术、新结构的非常规汽车燃料为动力来源(非常规汽车燃料指汽油、柴油以外的燃料),将先进技术进行汽车动力控制和驱动相结合的汽车。新能源汽车主要包括四种类型:…...

TDlib readme

不同开发语言使用TDlib的连接入口:td/example/README.md at master tdlib/td (github.com) 如golang:td/example/README.md at master tdlib/td (github.com)...

紧急救援【Dijkstra】

作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候,你的任务是带领你的…...

「Verilog学习笔记」数据累加输出

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 在data_out准备好,valid_b拉高时,如果下游的ready_b为低,表示下游此时不能接收本模块的数据,那么,将会拉低ready…...

typeof,instanceof

1.typeof typeof运算符返回的结果是以小写的字符串表示的变量的类型 2.instanceof instanceof运算符用于判断右边构造函数的原型对象是否在左边对象的原型链上 let arr[]let obj{}let datenew Dateconsole.log(arr instanceof Array)console.log(arr instanceof Object)conso…...

传统数仓和clickhouse对比

背景 传统数仓一般都是HiveSparkSql作为代表,不过也包括Kylin等,而clickhouse是实时OLAP的代表,我们简单看下他们的对比 传统数仓和clickhouse对比 HiveSparkSQL的传统数仓: 1.数据更新速度慢,由于传统数仓一般都是…...

burpsuite的大名早有耳闻,近日得见尊荣,倍感荣幸

问题: burpsuite中文乱码何解? burpsuite 与君初相识,犹如故人归。 burpsuite早有耳闻,近日得见真容,果然非同凡响。 Burp Suite is a comprehensive suite of tools for web application security testing. burp …...

Xshell连接VMware虚拟机中的CentOS

Xshell连接VMware虚拟机中的CentOShttps://www.cnblogs.com/niuben/p/13157291.html 步骤: 1. 检查Linux虚拟机的网络连接模式,确保它是NAT模式。(由于只在本机进行连接,所以没有选择桥接模式。当然,桥接模式的配置会…...

JVM类加载的过程和JVM垃圾回收机制

文章目录 一、JVM类加载的过程1.1类加载的基本流程1.1.1加载1.1.2验证1.1.3准备1.1.4解析1.1.5初始化 1.2双亲委派模型 二、JVM垃圾回收机制2.1找到垃圾2.1.1引用计数(比如Python,PHP中用到)2.1.2可达性分析(比如Java中用到) 2.2释放垃圾2.2.1标记清除2.2.2复制算法…...

【git error|SourceTree】error: bad signature 0x00000000 fatal: index file corrupt

报错 error: bad signature 0x00000000 fatal: index file corrupt 场景 在使用git add . 提交代码到缓冲区时或使用SourceTree时电脑宕机,重启后再次提交代码会出现该提示 原因分析 .git目录下的index文件损坏 解决方式 //删除索引文件 rm -f .git/index //回…...

读书笔记:《宽客人生:依曼纽尔·德曼》

金融工程,也叫数量金融,洞察了证券价值与不确定性之间的关系。 布莱克-斯科尔斯模型可以告诉我们如何利用标的股票来复制期权,以及复制期权的成本,做市商利用此来复制期权,以规避无法从其他人那里购买合适价格的期权的…...

车载通信架构 —— 传统车内通信网络LIN总线(低成本覆盖低速场景)

车载通信架构 —— 传统车内通信网络LIN总线(低成本覆盖低速场景) 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是…...

单例模式与多线程

目录 前言 正文 1.立即加载/饿汉模式 2.延迟加载/懒汉模式 1.延迟加载/懒汉模式解析 2.延迟加载/懒汉模式的缺点 3.延迟加载/懒汉模式的解决方案 (1)声明 synchronized 关键字 (2)尝试同步代码块 (3&am…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

数据库分批入库

今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

【HTTP三个基础问题】

面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机

这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

Bean 作用域有哪些?如何答出技术深度?

导语: Spring 面试绕不开 Bean 的作用域问题,这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开,结合典型面试题及实战场景,帮你厘清重点,打破模板式回答&#xff0c…...

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...

恶补电源:1.电桥

一、元器件的选择 搜索并选择电桥,再multisim中选择FWB,就有各种型号的电桥: 电桥是用来干嘛的呢? 它是一个由四个二极管搭成的“桥梁”形状的电路,用来把交流电(AC)变成直流电(DC)。…...