Git回滚中的reset和revert

简介: Git回滚中的reset和revert

     众所周知,现在Git属于比较流行的版本控制工具,但是我们在使用Git的过程中难免会遇到提交错误情况,比如小编曾经把IDEA的配置文件和项目一起提交到远程仓库了,当时简单粗暴地把整个仓库删了,太暴力了。今天我们来尝试一种更加优雅的方式,让代码回到提交以前的样子。


正式讲述优雅的方式之前,我们先来看下一个文件的旅程,从本地到远程仓库需要经历哪些区域呢?Git主要可以划分以下几个文件区域:工作区、暂存区、本地仓库、远程仓库一开始我们在工作区创建修改文件,新来的小文件一般需要经历 git add,然后进入暂存区,这算是上了Git版本控制的贼船了,暂存区的文件想要进入本地仓库就需要 git commit,此时还需要提交一份文件说明。最后通过 git push把文件推送到远程仓库。


我们来一步一步的玩,首先是添加到暂存区还没有提交到本地仓库的文件该怎么撤回呢?这时候我们可以直接使用 git reset命令,此命令可以直接把所有添加到暂存区未提交的文件撤回到工作区。


接着是已经提交到本地仓库的文件,我们可以通过git log查看提交日志的。这里我们常用的撤回可以分为下面两种,一是把文件撤回到暂存区,二是把文件撤回到工作区。

image.png

1、文件撤回到暂存区git reset--soft XXX(版本号)

比如我们把版本从c2撤回到c1版本,则可以使用此命令 git reset--soft c1,此时从c1版本到c2版本之间提交的所有文件都会被打到暂存区,但是并不会修改你本地的文件内容,你可以继续提交。

2、文件撤回到工作区git reset--mixed XXX(版本号)

比如我们把版本从c2撤回到c1版本,则可以使用此命令 git reset--mixed c1,此时从c1版本到c2版本之间通过添加提交到本地仓库的文件都会回到工作区,已经在本地仓库,版本迭代期间修改内容的文件回到暂存区,但是并不会修改你本地的文件内容,你可以继续操作。

3、撤销所有提交git reset--hard XXX(版本号)

这个命令可以说是硬核操作,不仅会撤销提交的操作,还会更改你本地文件,同样那c1和c2版本举例子,

  • 此操作会把c1到c2版本之间所有添加暂存区并提交到本地仓库的文件删除掉,
  • 版本更新期间修改内容的文件会把内容还原到c1版本,文件回到工作区。
  • 所有添加到暂存区未提交到本地仓库的文件会被删除
  • 未添加到暂存区的文件不受影响,因为他们还没有搭上Git版本控制的贼船
  • 此操作执行之后,回收站都找不到。

关于 git reset的命令还有 git reset--mergegit reset--keep,可以自己去查一查。


那么提交到远程仓库的文件该怎么办呢? git reset只对本地的文件有作用,对远程仓库上就是无效的了。这时候就需要新的命令 git revert,这个可以理解成回退到某个版本,并且生成一个新的版本,此时并不会修改之前的提交信息。git revert是版本的回退,但却是一次新的提交信息,将本地代码回退到指定版本,这时候你可以 git push把线上的代码更新一下。

image.png

有时候使用 git reset--hard也可以达到更改远程仓库的目的,但是在多人操作的时候,你想要撤回某次提交,要留点痕迹,不然可能会出大问题。总之,提交容易,撤销的时候要多加注意了。


收录于合集 #Git学习笔记

 

上一篇Git合并单个文件时的命令都是什么含义呢?


目录
相关文章
|
开发工具 git
在使用git revert回滚提交时,如果想保留部分更改应该怎么做?
在使用git revert回滚提交时,如果想保留部分更改应该怎么做?
1039 57
|
安全 开发工具 git
如何回滚Git中的提交?
如何回滚Git中的提交?
3307 0
|
开发工具 数据中心 git
详解IDEA git 版本回滚
详解IDEA git 版本回滚
2638 0
|
开发工具 git
IDEA通过git怎么回滚到某个提交节点或某个版本
IDEA通过git怎么回滚到某个提交节点或某个版本
4544 0
|
开发工具 git
IDEA通过git回滚到某个提交节点或某个版本的操作方法
IDEA通过git回滚到某个提交节点或某个版本的操作方法
2293 0
|
存储 开发工具 git
(详解踩坑)GIT版本回滚git stash、git reset、git reset --hard、git revert
(详解踩坑)GIT版本回滚git stash、git reset、git reset --hard、git revert
3240 0
|
开发工具 git
idea回滚git仓库代码
idea回滚git仓库代码
291 0
|
存储 缓存 运维
【运维知识高级篇】一篇文章带你搞懂Git!(Git安装+全局配置+Git初始化代码仓库+Git四大区域+Git四种状态+Git常用命令+Git分支+Git测试代码回滚)
【运维知识高级篇】一篇文章带你搞懂Git!(Git安装+全局配置+Git初始化代码仓库+Git四大区域+Git四种状态+Git常用命令+Git分支+Git测试代码回滚)
648 0
|
开发工具 git
git命令回滚撤销自己的错误覆盖提交
git命令回滚撤销自己的错误覆盖提交
284 0