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基础操作就到这里了,我们后面还有一些进阶操作~~
感谢大家的收看,我们共同进步!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/179200.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【计算机网络笔记】路由算法之层次路由

系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能(1)——速率、带宽、延迟 计算机网络性能(2)…

路由的控制与转发原理

场景1:路由器收到数据包后,会根据数据包的目标IP地址,计算出目标网段,再确定终端设备的具体位置。这个过程中,还需要计算出接口,或数据包下一跳的地址。最终会生成一条路由,即路径,存…

2023亚太杯数学建模B题思路分析 - 玻璃温室中的微气候法规

1 赛题 问题B 玻璃温室中的微气候法规 温室作物的产量受到各种气候因素的影响,包括温度、湿度和风速[1]。其中,适 宜的温度和风速是植物生长[2]的关键。为了调节玻璃温室内的温度、风速等气候因素 , 温室的设计通常采用带有温室风扇的通风系统&#xf…

postgreSQL如何快速查询大表数据量

文章目录 场景方案结果 场景 我有一个非常大的表,估计几百万或者几千万。 我开始使用了 select count(*) from my_table_javapub 方式,查询非常慢。 如何解决??? 方案 如果你需要更快地获取表中的行数&#xff0c…

重磅!这本30w人都在看的Python数据分析畅销书:更新了!

想学习python进行数据分析,这本《利用python进行数据分析》是绕不开的一本书。目前该书根据Python3.10已经更新到第三版。 Python 语言极具吸引力。自从 1991 年诞生以来,Python 如今已经成为最受欢迎的解释型编程语言。 pandas 诞生于2008年。它是由韦…

生成式AI与大语言模型,东软已经准备就绪

伴随着ChatGPT的火爆全球,数以百计的大语言模型也争先恐后地加入了这一战局,掀起了一场轰轰烈烈的“百模大战”。毋庸置疑的是,继方兴未艾的人工智能普及大潮之后,生成式AI与大语言模型正在全球开启新一轮生产力革新的科技浪潮。 …

『亚马逊云科技产品测评』活动征文|通过Lightsail搭建个人笔记

提示:授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道 文章目录 前言实践知识储备Lightsail介绍Leanote介绍实践…

一套开源、强大且美观的WPF UI控件库 - HandyControl

前言 今天给大家推荐一套开源、强大且美观的WPF UI控件库:HandyControl。 WPF介绍 WPF 是一个强大的桌面应用程序框架,用于构建具有丰富用户界面的 Windows 应用。它提供了灵活的布局、数据绑定、样式和模板、动画效果等功能,让开发者可以创…

ASO优化之关于应用类别的选择

用户可以通过应用商店内的类别,来发现他们想要的新应用。接下来我们来一起了解如何为应用来选择最符合最准确的类别。 1、应用的类别所显示的区域? 我们可以为APP选择一个主要类别和一个次要类别,所选择的主要类别对于该应用在应用商店曝光度…

Linux 局域网传输工具LANDrop安装

Linux 局域网传输工具LANDrop安装 🥙下载🌭解压🥪运行 🥙下载 官网下载 或网盘 🌭解压 使用以下命令解压获得squashfs-root文件夹 ./LANDrop-latest-linux.AppImage --appimage-extract🥪运行 进入squ…

Selenium切换窗口、框架和弹出框window、ifame、alert

一、切换窗口 #获取打开的多个窗口句柄 windows driver.window_handles #切换到当前最新打开的窗口 driver.switch_to.window(windows[-1]) #最大化浏览器 driver.maximize_window() #刷新当前页面 driver.refresh() 二、切换框架frame 如存在以下网页&#xff1a; <htm…

Java面试-框架篇-Mybatis

Java面试-框架篇-Mybatis MyBatis执行流程延迟加载使用及原理一, 二级缓存来源 MyBatis执行流程 读取MyBatis配置文件: mybatis-config.xml加载运行环境和映射文件构造会话工厂SqlSessionFactory会话工厂创建SqlSession对象(包含了执行SQL语句的所有方法)操作数据库的接口, Ex…

C# Onnx 特征匹配 DeDoDe 检测,不描述---描述,不检测

目录 介绍 效果 模型信息 项目 代码 下载 介绍 github地址&#xff1a;https://github.com/Parskatt/DeDoDe DeDoDe &#x1f3b6; Detect, Dont Describe - Describe, Dont Detect, for Local Feature Matching The DeDoDe detector learns to detect 3D consisten…

RabbitMQ 的网页界面操作说明

启动 上面给用户添加了角色和权限&#xff0c; 我们就可以登录了 先手动创建两个队列&#xff0c;然后再把这两个队列和交换机绑定&#xff0c;就可以发布消息 回到队列中看看有什么变化 队列中显示绑定了交换机 再看一下队列中发生的变化 可以看到队列中收到了信息

【鸿蒙应用ArkTS开发系列】- 云开发入门实战一使用鸿蒙登录组件实现客户端登录

目录 概述使用云端一体化开发模板创建项目工程创建登录入口页面集成登录SDK组件依赖登录组件SDK使用登录组件SDK 开启“手机号码”和“邮箱地址”认证方式 概述 通过本次课程&#xff0c;我们将学习怎么使用云端一体化开发模板来创建云开发工程&#xff0c;以及如何使用鸿蒙登…

Bean基本注解开发

Commponent 使用Component注解代替<bean>标签 <!--注解扫描:扫描指定的基本包及其子包下的类&#xff0c;识别使用了Component注解的文件--><context:component-scan base-package"org.xfy"></context:component-scan> package org.xfy.Dao.…

python二叉树链树_树的链式存储结构

二叉链树是一种树状数据结构&#xff0c;其中每个节点最多有两个子节点&#xff0c;分别称为左子节点和右子节点。每个节点包含一个数据元素和指向其左右子节点的指针。二叉链树可以是空树&#xff0c;也可以是具有以下特点的非空树&#xff1a; 1. 每个节点最多有两个子节点。…

Unity 三维场景的搭建 软件构造实验报告

实验2&#xff1a;仿真系统功能实现 1.实验目的 &#xff08;1&#xff09;熟悉在Unity中设置仿真场景&#xff1b; &#xff08;2&#xff09;熟悉在Unity中C#语言的使用&#xff1b; &#xff08;3&#xff09;熟悉仿真功能的实现。 2.实验内容 新建一个仿真场景&#x…

[操作系统]进程和线程

目录 1.什么是进程 1.1进程控制块抽象 1.2 CPU 分配 —— 进程调度&#xff08;Process Scheduling&#xff09; 1.3内存分配 —— 内存管理&#xff08;Memory Manage&#xff09; 1.4进程间通信(Inter Process Communication) 2.线程 2.1概念 2.2为什么要有线程 2.3线…

《DApp开发:开启全新数字时代篇章》

随着区块链技术的日益成熟&#xff0c;去中心化应用&#xff08;DApp&#xff09;逐渐成为数字世界的新焦点。在这个充满无限可能的全新领域&#xff0c;DApp开发为创新者们提供了开启数字时代新篇章的钥匙。 一、DApp&#xff1a;区块链创新成果 DApp是建立在区块链技术基础之…