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

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

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. react withRouter高阶组件

    作用:把不是通过路由切换过来的组件中,将react-router 的 history.location.match 三个对象传入props对象上 默认情况下必须是经过路由匹配渲染的组件才存在this. ...

  2. 关于 Elasticsearch 不同分片设置的压测报告

    摘要 为了验证当前集群经常出现索引超时以及请求拒绝的问题,现模拟线上集群环境及索引设置,通过压测工具随机生成测试数据,针对当前的 850 个分片的索引,以及减半之后的索引,以及更小分片索引的写入进行压 ...

  3. Steam Epic 启动程序默认地址

    Steam Epic 启动程(启动器)序默认地址 "D:\Games\EpicAPP\Epic Games\Launcher\Portal\Binaries\Win32\EpicGamesL ...

  4. nginx虚拟主机实战

    基于nginx部署网站 虚拟主机指的就是一个独立的站点,具有独立的域名,有完整的www服务,例如网站.FTP.邮件等. Nginx支持多虚拟主机,在一台机器上可以运行完全独立的多个站点. 一.为什么配 ...

  5. 什么是spring框架?

    spring是一个开放源代码的设计层面框架,它解决的是业务逻辑层和其他各层的松耦合问题,是一个分层的javaEE一站式轻量级开源框架

  6. 增补博客 第三篇 python 英文统计

    编写程序实现对特定英文文章(文本文件)的单词数和有效行数的统计,其中要求空行不计数: def count_words_and_lines(file_path): word_count = 0 line ...

  7. 天地图添加多个覆盖物,点击切换选中icon

       天地图添加多个覆盖物,点击覆盖物,切换选中的icon,移除之前的icon,再次点击移除之前的... 这个是react写的,先是确定中心位置,然后渲染点位,添加覆盖物,选中icon的不同, 主要看 ...

  8. 使用python脚本玩转古早TCAD软件(待更新)

    前言 TCAD(Technology Computer Aided Design),虽然原名中没有与半导体器件有关的词汇,但这种软件便是半导体工艺模拟及器件模拟的工具,可以说是EDA软件的一种.TCA ...

  9. 又跳槽!3年java经验offer收割机的面试心得

    中厂->阿里->字节,成都->杭州->成都 系列文章目录和关于我 0.前言 笔者在不足两年经验的时候从成都一家金融科技中厂跳槽到杭州阿里淘天集团,又于今年5月份从杭州淘天跳槽到 ...

  10. float与byte[]互相转换

    今天想利用socket发送数据,可是float类型该怎么发送呢?我的想法是先转换成byte[]型,接收之后再转换回来. float类型是4个字节,而byte是1个字节,所以需要转换成为byte[]的类 ...