git 几种还原版本_Git恢复之前版本的两种方法reset、revert(图文详解)

一、问题描述

在利用github实现多人合作程序开发的过程中,我们有时会出现错误提交的情况,此时我们希望能撤销提交操作,让程序回到提交前的样子,本文总结了两种解决方法:回退(reset)、反做(revert)。

二、背景知识

git的版本管理,及HEAD的理解

使用git的每次提交,Git都会自动把它们串成一条时间线,这条时间线就是一个分支。如果没有新建分支,那么只有一条时间线,即只有一个分支,在Git里,这个分支叫主分支,即master分支。有一个HEAD指针指向当前分支(只有一个分支的情况下会指向master,而master是指向最新提交)。每个版本都会有自己的版本信息,如特有的版本号、版本名等。如下图,假设只有一个分支:

三、解决方法

方法一:git reset

原理: git reset的作用是修改HEAD的位置,即将HEAD指向的位置改变为之前存在的某个版本,如下图所示,假设我们要回退到版本一:

适用场景: 如果想恢复到之前某个提交的版本,且那个版本之后提交的版本我们都不要了,就可以用这种方法。

具体操作:

1. 查看版本号:

可以使用命令“git log”查看:

也可以在github网站上查看:

2. 使用“git reset --hard 目标版本号”命令将版本回退:

再用“git log”查看版本信息,此时本地的HEAD已经指向之前的版本:

3. 使用“git push -f”提交更改:

此时如果用“git push”会报错,因为我们本地库HEAD指向的版本比远程库的要旧:

所以我们要用“git push -f”强制推上去,就可以了:

在github图形化界面上看,远程库的HEAD也已经指向目标版本:

回退成功!

方法二:git revert

原理: git revert是用于“反做”某一个版本,以达到撤销该版本的修改的目的。比如,我们commit了三个版本(版本一、版本二、 版本三),突然发现版本二不行(如:有bug),想要撤销版本二,但又不想影响撤销版本三的提交,就可以用 git revert 命令来反做版本二,生成新的版本四,这个版本四里会保留版本三的东西,但撤销了版本二的东西。如下图所示:

适用场景: 如果我们想撤销之前的某一版本,但是又想保留该目标版本后面的版本,记录下这整个版本变动流程,就可以用这种方法。

具体操作:

举个例子,现在库里面有三个文件:READ.md、text.txt、text2.txt。

1. 查看版本号:

可以通过命令行查看(输入git log):

如图,最近的两个版本分别叫:“add text.txt”(即新增了文件text.txt)、“add text2.txt”(新增了文件text2.txt)。这个时候我们不需要text.txt这个文件了,那就是说不想要“add text.txt”那个版本的操作,那可以通过反做“add text.txt”这个版本来实现。

也可以通过github网站图形化界面查看版本号:

2.使用“git revert -n 版本号”反做,并使用“git commit -m 版本名”提交:

(1)反做,使用“git revert -n 版本号”命令。如下命令,我们反做版本号为8b89621的版本:

git revert -n 8b89621019c9adc6fc4d242cd41daeb13aeb9861

注意: 这里可能会出现冲突,那么需要手动修改冲突的文件。而且要git add 文件名。

(2)提交,使用“git commit -m 版本名”,如:

git commit -m "revert add text.txt"

此时可以用“git log”查看本地的版本信息,可见多生成了一个新的版本,该版本反做了“add text.txt”版本,但是保留了“add text2.txt”版本:

3.使用“git push”推上远程库:

git push

查看github上显示的远程库版本信息:

此时查看仓库的文件,剩下两个:READ.md、text2.txt

反做成功!

到此这篇关于Git恢复之前版本的两种方法reset、revert(图文详解)的文章就介绍到这了,更多相关Git恢复之前版本内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

本文标题: Git恢复之前版本的两种方法reset、revert(图文详解)

本文地址: http://www.cppcns.com/wangluo/xiangguanjiqiao/329250.html

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自定义列表视图

通过继承BaseAdapter写一个子类,可以创建自定义列表视图: public class MyListAdapter extends BaseAdapter { private LayoutInflater mInflater;//声明一个LayoutInflater类变量 private Context mContext;//声明一个Context类变量 priva…

计算机专业答辩模板,论文答辩模板-计算机专业.ppt

《论文答辩模板-计算机专业.ppt》由会员分享,可在线阅读,更多相关《论文答辩模板-计算机专业.ppt(9页珍藏版)》请在装配图网上搜索。1、基于S2SH论坛系统的设计与实现,专业: 姓名: 学号: 指导教师:,(附)论文…

springmvc请求返回一个字符_SpringMVC系列之Web利器SpringMVC

课程简介:课程目标:了解SpringMVC和Spring的关系,能够使用SpringMVC框架开发自己的Web应用。整合Spring , SpringMVC , MyBatis搭建项目开发环境,理解三层架构和MVC模式适用人群:适合对Java基础知识应用自如&#xff0…

一次完整较为渗透过程

步骤一: 利用阿D浏览器通过https://s.bt.gg 注入关键字扫描发现注入点: http://www.rqyl.gov.cn/*****.php?ID153 用啊D跑不出账号密码 步骤二: 手工注入http://www.rqyl.gov.cn/*****.php?ID153 and 11 、and12出错 猜字段ht…

html5 filereader读取文件,H5的FileReader分布读取文件应该如何使用以及其方法简介...

这次给大家带来H5的FileReader分布读取文件应该如何使用以及其方法简介,H5的FileReader分布读取文件的使用以及其方法简介的注意事项有哪些,下面就是实战案例,一起来看一下。先介绍一下H5中FileReader的一些方法以及事件FileReader方法名称 作…

mysql 查询某一主键在那些表中中被设置为外键了

use information_schema; show tables; select * from KEY_COLUMN_USAGE where COLUMN_NAMEareaid; 转载于:https://www.cnblogs.com/liaojie970/p/4799750.html

室内空气流动原理图_新风系统原理图—新风系统原理介绍

如今我们在进行新家的装修的时候,不少人为了家人的健康着想,都在选购家电的同时会选择安装一款新风系统。但是尽管如此,大家对新风系统原理其实并不了解,更不要提新风系统各部分的原理了,下面小编就结合新风系统原理图…

计算机网络线路争用,计算机网络系统集成复习要点

计算机网络系统集成复习要点计算机网络系统集成复习要点1.在信息领域,对于系统集成一般分为软件集成、硬件集成和网络系统集成。2.按网络覆盖范围的大小,将计算机网络分为局域网(LAN)、城域网(MAN)、广域网(WAN)和互联网。3. 计算机网络拓扑结构是指一个…

mrsql查询第二高的成绩_mysql-查找用户的最高分数和相关的详细信息

我有一个表,用户可以在其中存储分数和有关该分数的其他信息(例如,分数注释或花费的时间等).我想要一个mysql查询,该查询可找到每个用户的个人最佳成绩及其相关的注释和时间等我尝试使用的是这样的:SELECT *,MAX(score)FROM table GROUP BY(用户)这样做的问题是,虽然…

centos 7 防火墙和端口配置

开启redis端口,修改防火墙配置文件 vi /etc/sysconfig/iptables 加入端口配置 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 6379:7000 -j AC…

计算机网络实验11.6.1,6.111 2004春季课程:数位系统概论实验(Introductory Digital Systems Laboratory, Spring 2004)...

摘要:Lectures and labs on digital logic, flipflops, PALs, counters, timing, synchronization, finite-state machines, and microprogrammed systems prepare students for the design and implementation of a final project of their choice: games, music, …

v380pro设备连接失败_天猫精灵可以连接台式电脑使用吗?需要什么东西? 安装操作是哪几个步骤? 最好有图片解说!...

使用语音将天猫精灵调到【蓝牙配对】;打开电脑的蓝牙适配界面,让电脑找到天猫精灵,稍等片刻,点击【使用远程装置的扬声器聆听来自此PC的音频】后的连接;最后调整音量即可。以下是详细介绍:1、对天猫精灵说【…

SWOT分析是神马?

SWOT分析是思维的工具来理解事物的方式。人生在世,作为一个独立的实体,不可避免地需要思考的问题。除非你是猪。猪比这更聪明。眠质量,都要完爆白领,蓝领和金领们。SWOT分析分为四个象限。我们用一头名猪——麦兜来打个例如就清楚…

hive 日誌怎麼查看_Hive各个日志里都存放了什么信息?

审计日志首先,对于审计日志来说,记录了某个时间点某个用户从哪个IP发起对HiveServer或者MetaStore的请求以及记录执行的语句是什么。如下的HiveServer审计日志,表示在2016-02-01 14:51:22 用户user_chen向HiveServer发起了show tables请求&am…

语音媒体和信令的测试软件,IP多媒体子系统信令分析工具的设计与实现

摘要:IP多媒体子系统(InternetProtocolMultimediaSubsystem,IMS)为基于IP的移动和固定通信融合提供了基础,并被业界认为是网络演进的一个重要阶段.与此同时,信令分析工具一直被电信运营商,设备供应商,测试仪器厂商广泛而深入的关注.一款优秀的信令分析工具,可以使设…

大小写转换

1 ;小写字母的ASCII码比大写字母的ASCII码的值大20H。2 ;比如大写字母A的ASCII值为01000001 小写字母a的ASCII码为:011000013 ;公式为 a(01100001) - 20H(100000) A(01000001)4 ;A(01000001) 20H(100000) a(01100001)5 assume cs:codesg,ds:datasg6 7 datasg seg…

四象限法推导lm曲线_试用几何方法推导IS曲线(四象限法)

【简答题】请根据自己的实际情况,撰写一份适合自己的“征婚启事”。内容积极健康。文体,字数等不限【填空题】由一棵二叉树的前序序列和 序列可唯一确定这棵二叉树。 (1.0分)【判断题】完全二叉树一定是满二查树。 (1.0分)【判断题】二叉树的前序遍历中,任意一个结点均处于其子…

IDE-Ecplise-代码注释 模版 编码规范 配色

说明: 代码注释主要用于方便代码后期维护,编码规范,增加代码阅读性和维护性。因网上看到的很多博客中片段局多,故整理后重写一篇,方便交流学习。 先看下加过注释模版后的效果。如上图所示,创建类&#xff0…

通过路由远程计算机重启,华为无线路由器三种常用重启的方法

日常重启无线路由器并不是一个高难度动作,但是你了解华为(HUAWEI)家用无线路由器的三种常用的重启的方法吗?这三种方法也适用于绝大多数品牌的路由器,只不过在某个细节上略有区别。华为路由器的三种常用重启方法分别是:硬重启、软…

个人信息管理系统代码_学生信息管理系统(springboot + vue)

学生信息管理系统零、基础项目为前后分离项目1、前端(front-end)基于 vue-admin-template 开发2、后端(rear-end)Jdk8Maven3MySQL5.7SpringBoot2SQLYog一、功能模块图图片.png二、系统预览1、登录登录.png2、首页首页.png3、查看学生信息查看学生信息.png4、编辑学生信息编辑学…