git学习(二)撤销、回滚操作

本文详细讲解如何在Git中撤销未追踪、已追踪文件的修改,以及撤回commit的两种方法:reset和revert。重点比较两者操作效果,包括对暂存区和提交历史的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、已修改未追踪的文件的撤销

我们在git学习(一)为项目创建git仓库的基础上进行操作,在README.md中随便写点内容
在这里插入图片描述
查看状态

git status

在这里插入图片描述
此时我们可以通过以下命令撤回此次修改

git restore README.md

可以发现文件的内容又为空了,也就是修改前的内容

2、撤回已追踪的文件

首先修改README.md的内容 通过git add 命令追踪

git add README.md

在这里插入图片描述

撤销追踪的话,即从暂存区去除,可以通过以下命令实现

git restore --staged README.md

在这里插入图片描述

3、撤回commit

我们先把修改后的README.md文件提交到本地仓库
在这里插入图片描述

那么有两种方式可以对commit进行回滚,分别是

  • git reset
  • git revert

git reset

git reset是将commit 回滚到之前某个版本,将已经commit的文件变为未追踪状态(新添加的文件)、或修改待暂存状态(之前就有的文件,但是后面修改了)

通过如下命令,可以回到上一个版本的状态

git reset HEAD^
git status

在这里插入图片描述

可以发现README.md撤回到了已修改未追踪的状态,也就是待用git add 操作加入暂存区的状态

如果要撤销该文件的内容修改,可以看文本章的第一点,如需提交,就git add添加,然后git commit即可

那么为了接下来演示git revert,我们选择commit
在这里插入图片描述

git revert

首先,我们在touch一个文件a,然后commit
在这里插入图片描述

我们通过git revert命令,反做上上次一次commit,也就是 修改README.md的commit

git revert HEAD^

在这里插入图片描述

此时去查看README.md的内容,发现消失了,也就是说git revert 命令是将之前某一次的commit取消掉,但是不影响取消的commit前后的commit
而git reset是将此次commit后的文件都变为待git add状态

reset 和 revert区别

在这里插入图片描述

  • 如图所示,revert的话是将制定的版本的操作进行一次反向操作,生成新的提交,这个反做的操作是可以看到的,而reset的话是直接回推到指定的版本
  • reset的话,是回退到之前的版本,那么是无法push到远程仓库的,因为远程仓库的版本比回退后的版本新,而revert是重做某次commit,所以操作后的版本大于远程仓库的版本,是可以push的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我不会c语言

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值