【Git】03 撤销 & 版本回退
回退分为三种情况,每种情况对应了我们文件的存储区域
工作区
|
暂存区
|
版本区(当前分支)
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 撤销 & 版本回退的更多相关文章
- [原]git的使用(一)---建立本地仓库、add和commit、status和git diff、版本回退使用git reset
在window下已经安装了git的环境 1.建立本地仓库 mkdir test #建立test目录 cd test #进入目录 git init # ...
- Git使用:版本回退
在Git中,我们可以用 git log命令查看我们修改的历史记录 C:\Users\Administrator\Documents\GitHub\learngit [master]> git l ...
- 【Git学习笔记】初始化Git仓库和版本回退
学习地址 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 什么是版本库呢?版本库又 ...
- git中的版本回退
git版本回退有两种情况,一种是从本地版本库中(head区)回退到某个版本,可以用命令 git reset --hard head^ 或git reset --hard head~x ,head指的是 ...
- Git秘籍:在 Git 中进行版本回退
导读 在这篇文章中,你将学到如何查看项目中的历史版本,如何进行版本回退,以及如何创建 Git 分支以便你可以大胆尝试而不会出现问题.快来试试吧. 在你的 Git 项目的历史中,你的位置就像是摇滚专辑中 ...
- Git教程之版本回退(4)
现在,我们已经学会了修改文件,然后把修改提交到Git版本库,现在再次修改readme.txt文件如下:
- Git 系列(四):在 Git 中进行版本回退
在这篇文章中,你将学到如何查看项目中的历史版本,如何进行版本回退,以及如何创建 Git 分支以便你可以大胆尝试而不会出现问题. 在你的 Git 项目的历史中,你的位置就像是摇滚专辑中的一个片段,由一个 ...
- Git -- 基本操作 之 版本回退
现在,你已经学会了修改文件,然后把修改提交到Git版本库,现在,再练习一次,修改readme.txt文件如下: Git is a distributed version control system. ...
- Git学习-Git时光机之版本回退(二)
Git,是Linus花了两周时间用C写的一个分布式版本控制系统.牛人该怎么定义? 零.结论先行 倒叙总结一下: HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git ...
- Git分支和版本回退
一.分支 1.分支简单介绍 简单使用: 可以将git branch new_branch和git checkout new_branch两个命令合并成一个命令: git checkout -b new ...
随机推荐
- 如何简单实现suno-api账号保活
本文由 ChatMoney团队出品 简介 之前的一个简易的项目suno-api.是使用cookie来获取suno-token发起请求的,之前写的简单,并没有做cookie保活,在运行一段时间后cook ...
- [SWPUCTF 2021 新生赛]easyrce
这道题比较简单,打开环境一看就只需要构造一个get传参的命令就行,我们就看一下有些什么文件,构造payload: ?url=system ("ls /"); 看到有个 flllll ...
- 【简写Mybatis-02】注册机的实现以及SqlSession处理
前言 注意: 学习源码一定一定不要太关注代码的编写,而是注意代码实现思想: 通过设问方式来体现代码中的思想:方法:5W+1H 源代码: https://gitee.com/xbhog/mybatis- ...
- 从 Redis 开源协议变更到 ES 国产化:一次技术自主的机遇
引言 近日,Redis Labs 宣布其主导的开源项目 Redis 将采用双重源代码可用许可证(RSALv2)和服务器端公共许可证(SSPLv1).这一重大决策标志着 Redis 从传统的 BSD 许 ...
- 开源高性能结构化日志模块NanoLog
最近在写数据库程序,需要一个高性能的结构化日志记录组件,简单研究了一下Microsoft.Extensions.Logging和Serilog,还是决定重造一个轮子. 一.使用方法 直接参考以 ...
- raksmart服务器部署SSL报错:ERR_CERT_COMMON_NAME_INVALID
背景:raksmart服务器 下篇 部署项目 SSL报错:ERR_CERT_COMMON_NAME_INVALID 安装certbot sudo apt update sudo apt install ...
- email邮件(带附件,模拟文件上传,跨服务器)发送核心代码 Couldn't connect to host, port: smtp.163.com, 25; timeout -1;
邮件(带附件,模拟文件上传,跨服务器)发送核心代码1.测试邮件发送附件接口 /** * 测试邮件发送附件 * @param multipartFile * @return */ @RequestMap ...
- golang执行命令 && 实时获取输出结果
背景 golang可以获取命令执行的输出结果,但要执行完才能够获取. 如果执行的命令是ssh,我们要实时获取,并执行相应的操作呢? 示例 func main() { user := "roo ...
- GIS数据获取:土地利用与土壤属性、DEM、水体水系数据
本文对目前主要的土壤属性.地表覆盖.数字高程模型与水体水系矢量数据获取网站加以整理与介绍. 本文为"GIS数据获取整理"专栏中第三篇独立博客,因此本文全部标题均由" ...
- C++中UNIX时间戳与日期互转
C++中UNIX时间戳与日期互转 使用time.h头文件 localtime 可以把时间戳转为 tm 结构体, tm结构体中可以格式化输出时间 mktime可以把tm结构体转为时间戳 tm 结构体中: ...