Git如何实现代码撤回操作?可通过reset指令回滚误提交代码!

Java基础 潘老师 2年前 (2022-10-24) 1191 ℃ (0) 扫码查看

在使用git进行版本控制与管理的过程中,我们经常会发现有时候由于粗心导致代码提交出错,不应该commit的代码commit到了对应的分支,我们该如何撤回这部分误提交的代码呢?答案是可以通过git reset指令来实现代码回滚,至于具体的用法,下面潘老师来以一个案例来演示给大家看下。
在使用前,建议大家先了解下git的3个本地工作区+1个远程库之间的关系,可以看这篇文章:Git本地3个工作区域详解及如何回滚,还搞不懂git建议看看

git reset指令三种用法区别与说明

git reset 三种模式分别为 : mixed(默认)、softhard
1、git reset --soft:代表将某个commit id之后的变更内容全部放到暂存区中。

2、git reset --mixed:将某个commit id之后的变更内容全部放到工作区中。默认方式,不写--mixed就是默认这一种。

3、git reset --hard:将某个commit id之后的变更内容全部丢弃。

所谓commit id,是指每次提交生成的一个id,通过git log指令可以查看。

实例演示

第1步:查看commit id

我们先看下当前commit id的值为2c2a0278e849b4ab7f2962b5e9c56390ef16d37c

此时,远程仓库和本地仓库一样,都只有一个DemoApplication类。

第2步:创建一个类并commit,但不push

这里我新建了一个名为GitCommit的类,并进行了commit操作,但未push到远程,此时该类在我的本地库,现在可以进行撤回测试。
1、撤回到工作区:

git reset --mixed 2c2a0278e849b4ab7f2962b5e9c56390ef16d37c

git reset --mixed撤回到工作区
通过上面操作发现,GitCommit类已经回到了工作区,因为GitCommit类是在该commit id之后提交的,所以直接撤回到到工作区。

第4步:再新建一个类,并将该类commit

我们再新建一个一个GitCommit2类,并将其commit

第5步:撤回到暂存区

git reset --soft 2c2a0278e849b4ab7f2962b5e9c56390ef16d37c

git reset --soft撤回到暂存区

第6步:再新建一个类,并将该类push

我们再新建一个GitCommit3类,并将其push,然后将GitCommit类进行commit但不push,将GitCommit2保持add状态即可

第7步:测试hard撤回

git reset --hard 2c2a0278e849b4ab7f2962b5e9c56390ef16d37c


我们发现在该commit id 之后的所有的代码(我们这里是3个类)全部没了,恢复到了最开始的状态。
但是,我们发现,远程库中已push的GitCommit3类还是存在的。也就是说hard虽然会回退已提交的,并清除本地文件,但不会影响已push到远程仓库的。

甚至我们还可以通过git pull把GitCommit3文件再拉取下来,也就是说先git resset –hard,然后再拉取下,可以删除本地仓库、暂存区、工作区等未提交到远程的所有文件,然后把已提交的文件还原。这里拉取就不再演示了

补充

快捷使用,可以回退到上个版本,上上个版本等,指定commit id也可以只写前几位即可。下面以git reset --hard为例

//退回到相对于当前版本的上一个版本 HEAD 表示当前版本
git reset --hard HEAD^
//退回到相对于当前版本的上上一个版本  HEAD 代表当前版本
git reset --hard HEAD^^
//退回到相对于当前版本的上 100 个版本去  HEAD 表示当前版本
git reset --hard HEAD~100
//退回到指定的版本   这里不需要全部写commit id  Git 回去自动适配
git reset --hard 3628164

思考

那么该如何撤销已push的代码呢?看下面这篇文章吧。

Git push错分支该如何回滚远程分支代码

文章目录 前置说明 操作步骤 第1步:查看git提交日志 第2步:将旧分支代码撤回暂存区 第3步:切换新分支 […]

以上就是关于Git如何实现代码撤回操作的全部详解,关于通过reset指令回滚误提交代码的操作你学会了吗?


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/java/5690.html
喜欢 (0)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】