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

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

本文主要介绍了恢复Git上一版本的两种方法,reset和revert(图文详解),通过图文并茂的例子进行了非常详细的介绍,对大家的学习或工作有一定的参考价值。下面让我们跟随边肖一起学习。

一、问题描述

在使用github实现多人协作程序开发的过程中,我们有时会出现提交错误。此时,我们希望取消提交操作,将程序恢复到原始状态。本文总结了两种解决方案:复位和反转。

二、背景知识

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”检查版本信息。这时,当地负责人已经指着先前的版本:

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

如果此时使用“git push”,将会报告一个错误,因为我们的本地库头指向的版本比远程库的版本旧:

所以我们要用“git push -f”强行推上去,就是这样:

看着github的图形界面,远程库的负责人也已经指向了目标版本:

回滚成功!

方法二:git revert

原理:git revert用于“逆转”某个版本,以便撤销对该版本的修改。例如,我们提交了三个版本(版本1、版本2和版本3),突然发现版本2无法工作(例如,有一个bug)。如果我们想取消版本2,但又不想影响被取消的版本3的提交,我们可以使用git revert命令来反转版本2,生成一个新的版本4,它会保留版本3的东西,但取消版本2的东西。如下图所示:

适用场景:如果我们想要取消一个之前的版本,但是想要保留目标版本之后的版本,并且记录整个版本变更过程,可以使用这个方法。

具体操作:

比如现在库中有三个文件:READ.md,text.txt,text2.txt。

1.检查版本号:

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

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

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

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

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

git revert-n 8b 89621019 c 9 ADC 6 fc 4d 242 CD 41 daeb 13 aeb 9861

注意:这里可能有冲突,所以需要手动修改冲突的文件。并要求git添加文件名。

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

git commit -m 'revert add text.txt '

此时可以使用“git log”查看本地版本信息,显示生成了新版本,使“add text.txt”版本改为了“add text2.txt”版本,但保留了“add text 2 . txt”版本:

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

git推送

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

这时候检查一下仓库里的文件,还剩两个:READ.md和text2.txt

要成功!

关于Git恢复前的复位和还原两种方法的文章到此为止。请搜索我们以前的文章或继续浏览下面的相关文章,以获得更多关于恢复Git之前版本的信息。希望你以后能支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • git提交代码操作,git怎么提交代码
  • git提交代码操作,git怎么提交代码,利用git提交代码的方法步骤
  • git安装教程 安装配置,如何搭建git环境
  • git安装教程 安装配置,git安装与环境变量配置,Git下载、安装与环境配置的详细教程
  • git修改commit内容,git commit信息修改
  • git修改commit内容,git commit信息修改,详解git commit --amend 用法
  • git代码服务器,git版本命令
  • git代码服务器,git版本命令,Git版本控制服务器详解
  • git下载太慢怎么办,解决git下载很慢的问题
  • git下载太慢怎么办,解决git下载很慢的问题,git详细安装教程及下载太慢的解决办法
  • git 设置忽略文件,git修改gitignore不生效
  • git 设置忽略文件,git修改gitignore不生效,git设置忽略文件.gitignore的方法
  • ,,详解Git合并分支的流程步骤
  • ,,使用git命令上传代码
  • ,,Git工作流演示及三种工作方式
  • 留言与评论(共有 条评论)
       
    验证码: