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合并单个文件时的命令都是什么含义呢?


目录
相关文章
|
6天前
|
开发工具 git 索引
$ git revert -m v1.0.21 6003eb5f5b455f0a3dfb74f48f63878e7 error: option `mainline' expect
$ git revert -m v1.0.21 6003eb5f5b455f0a3dfb74f48f63878e7 error: option `mainline' expect
|
4月前
|
开发工具 数据中心 git
详解IDEA git 版本回滚
详解IDEA git 版本回滚
134 0
|
6天前
|
开发工具 git
7-5git reset --hard origin/master代表什么意思
7-5git reset --hard origin/master代表什么意思
|
3月前
|
开发工具 git
在idea里如何实现Git项目回滚
在idea里如何实现Git项目回滚
|
4月前
|
开发工具 git
idea的git reset current branch to here操作详解
idea的git reset current branch to here操作详解
296 1
|
4月前
|
开发工具 git
Git恢复之前版本的两种方法reset、revert(图文详解)
Git恢复之前版本的两种方法reset、revert(图文详解)
263 0
|
5月前
|
开发工具 git
IDEA通过git怎么回滚到某个提交节点或某个版本
IDEA通过git怎么回滚到某个提交节点或某个版本
1286 0
|
5月前
|
开发工具 git
IDEA通过git回滚到某个提交节点或某个版本的操作方法
IDEA通过git回滚到某个提交节点或某个版本的操作方法
218 0
|
5月前
|
SQL 开发工具 git
git 修改文件后revert
如果你想撤销对一个文件的修改,可以使用`git checkout`命令。 假设你想撤销名为`file.txt`的文件的修改,你可以执行以下命令: ``` git checkout -- file.txt ``` 这将把`file.txt`文件恢复到最后一次提交的状态。如果你想撤销所有修改,可以使用`git checkout -- .`命令。 如果你已经提交了修改,并且想要撤销提交,可以使用`git revert`命令。这将创建一个新的提交,撤销之前的提交。假设你想撤销最后一次提交,可以执行以下命令: ```sql git revert HEAD ``` 这将创建一个新的提交,撤销最
|
5月前
|
存储 开发工具 git
(详解踩坑)GIT版本回滚git stash、git reset、git reset --hard、git revert
(详解踩坑)GIT版本回滚git stash、git reset、git reset --hard、git revert
440 0