回退分为三种情况,每种情况对应了我们文件的存储区域

工作区
|
暂存区
|
版本区(当前分支)

1、文件可能存放在工作区,没有被Git追踪【红色标记状态】

2、文件可能已经添加到暂存区,没有被Git提交到版本分支中【绿色状态】

3、文件可能已经在版本分支中

1、在工作区的撤销

首先查看Git当前状态:

对我们工作区的文件进行内容更改:

vim text.txt
A new content insert this file...

再次查看,很显然的,更改后的文件,Git就会标记为未追踪的文件

如果要撤销回到最初的样子【这是撤销命令】

git checkout 文件名称

可以查看文件的状态:

之前添加的内容已经没有了,Git仓库状态显示未没有需要提交的,工作树干净

2、在暂存区中的撤销

现在重新添加内容,并且提交到暂存区中:

文件添加进暂存区:

对暂存区的文件撤销,即把文件从暂存区拉回到工作区:

git reset HEAD -- 文件名称

如果撤销所有暂存区的文件,可以:

git reset HEAD -- .

或者直接删除暂存区中的文件:

git rm --cached 文件名称

3、在版本分支中的版本回退:

首先把text.txt文件进行提交,每一次提交代表了一个版本存储在版本分支中:

每一个版本都具有独一无二的版本序列号,例如下图的黄色字符串

SVN是一个服务器集中式的版本控制系统,所有的版本控制统一在SVN中执行

但是Git是一个分布式的版本控制系统,每一个人都有独立的本地仓库

版本不会统一在SVN中,每一个开发者的仓库中的版本号就有可能会一样,这样把版本提交到统一的仓库中就会发生问题

版本冲突,所以为了解决这个问题,Git使用了这种奇特的序列号作为版本号,以防止版本冲突

例如现在最新的版本是第三次提交,而我们希望回退到第二版本或者更早的。。。

首先是回退到上一个版本

这里一共三个版本,最新版本就是第三次提交

执行这个命令以后可以看到,当前的版本到了第二次提交了

git reset --hard HEAD^

如果要回退临近的几个版本,^表示上一个版本,多个^就表示之前的第n个

git reset --hard HEAD^^^^ ...

指令的意思就很明确了,从头开始回退到第N个版本

但是如果我们希望回退到指定的版本,可以声明版本号来回退:

git reset --hard 版本号

【Git】03 撤销 & 版本回退的更多相关文章

  1. [原]git的使用(一)---建立本地仓库、add和commit、status和git diff、版本回退使用git reset

    在window下已经安装了git的环境 1.建立本地仓库 mkdir   test     #建立test目录 cd   test        #进入目录 git  init           # ...

  2. Git使用:版本回退

    在Git中,我们可以用 git log命令查看我们修改的历史记录 C:\Users\Administrator\Documents\GitHub\learngit [master]> git l ...

  3. 【Git学习笔记】初始化Git仓库和版本回退

    学习地址 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 什么是版本库呢?版本库又 ...

  4. git中的版本回退

    git版本回退有两种情况,一种是从本地版本库中(head区)回退到某个版本,可以用命令 git reset --hard head^ 或git reset --hard head~x ,head指的是 ...

  5. Git秘籍:在 Git 中进行版本回退

    导读 在这篇文章中,你将学到如何查看项目中的历史版本,如何进行版本回退,以及如何创建 Git 分支以便你可以大胆尝试而不会出现问题.快来试试吧. 在你的 Git 项目的历史中,你的位置就像是摇滚专辑中 ...

  6. Git教程之版本回退(4)

    现在,我们已经学会了修改文件,然后把修改提交到Git版本库,现在再次修改readme.txt文件如下:

  7. Git 系列(四):在 Git 中进行版本回退

    在这篇文章中,你将学到如何查看项目中的历史版本,如何进行版本回退,以及如何创建 Git 分支以便你可以大胆尝试而不会出现问题. 在你的 Git 项目的历史中,你的位置就像是摇滚专辑中的一个片段,由一个 ...

  8. Git -- 基本操作 之 版本回退

    现在,你已经学会了修改文件,然后把修改提交到Git版本库,现在,再练习一次,修改readme.txt文件如下: Git is a distributed version control system. ...

  9. Git学习-Git时光机之版本回退(二)

    Git,是Linus花了两周时间用C写的一个分布式版本控制系统.牛人该怎么定义? 零.结论先行 倒叙总结一下: HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git ...

  10. Git分支和版本回退

    一.分支 1.分支简单介绍 简单使用: 可以将git branch new_branch和git checkout new_branch两个命令合并成一个命令: git checkout -b new ...

随机推荐

  1. 如何简单实现suno-api账号保活

    本文由 ChatMoney团队出品 简介 之前的一个简易的项目suno-api.是使用cookie来获取suno-token发起请求的,之前写的简单,并没有做cookie保活,在运行一段时间后cook ...

  2. [SWPUCTF 2021 新生赛]easyrce

    这道题比较简单,打开环境一看就只需要构造一个get传参的命令就行,我们就看一下有些什么文件,构造payload: ?url=system ("ls /"); 看到有个 flllll ...

  3. 【简写Mybatis-02】注册机的实现以及SqlSession处理

    前言 注意: 学习源码一定一定不要太关注代码的编写,而是注意代码实现思想: 通过设问方式来体现代码中的思想:方法:5W+1H 源代码: https://gitee.com/xbhog/mybatis- ...

  4. 从 Redis 开源协议变更到 ES 国产化:一次技术自主的机遇

    引言 近日,Redis Labs 宣布其主导的开源项目 Redis 将采用双重源代码可用许可证(RSALv2)和服务器端公共许可证(SSPLv1).这一重大决策标志着 Redis 从传统的 BSD 许 ...

  5. 开源高性能结构化日志模块NanoLog

      最近在写数据库程序,需要一个高性能的结构化日志记录组件,简单研究了一下Microsoft.Extensions.Logging和Serilog,还是决定重造一个轮子. 一.使用方法   直接参考以 ...

  6. raksmart服务器部署SSL报错:ERR_CERT_COMMON_NAME_INVALID

    背景:raksmart服务器 下篇 部署项目 SSL报错:ERR_CERT_COMMON_NAME_INVALID 安装certbot sudo apt update sudo apt install ...

  7. email邮件(带附件,模拟文件上传,跨服务器)发送核心代码 Couldn't connect to host, port: smtp.163.com, 25; timeout -1;

    邮件(带附件,模拟文件上传,跨服务器)发送核心代码1.测试邮件发送附件接口 /** * 测试邮件发送附件 * @param multipartFile * @return */ @RequestMap ...

  8. golang执行命令 && 实时获取输出结果

    背景 golang可以获取命令执行的输出结果,但要执行完才能够获取. 如果执行的命令是ssh,我们要实时获取,并执行相应的操作呢? 示例 func main() { user := "roo ...

  9. GIS数据获取:土地利用与土壤属性、DEM、水体水系数据

      本文对目前主要的土壤属性.地表覆盖.数字高程模型与水体水系矢量数据获取网站加以整理与介绍.   本文为"GIS数据获取整理"专栏中第三篇独立博客,因此本文全部标题均由" ...

  10. C++中UNIX时间戳与日期互转

    C++中UNIX时间戳与日期互转 使用time.h头文件 localtime 可以把时间戳转为 tm 结构体, tm结构体中可以格式化输出时间 mktime可以把tm结构体转为时间戳 tm 结构体中: ...