Git如何实现撤销提交(命令行+IDEA)

 更新时间:2023年12月25日 11:23:49   作者:beeworkshop  
这篇文章主要介绍了Git如何实现撤销提交(命令行+IDEA)问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

概览、Git代码管理的几个状态及倒回

一、基于命令行

1. 工作区的代码想撤销

可能有一天我正在写代码,写了很久发现写错了,想恢复到一开始的状态,一个笨办法就是把刚刚写的代码一行一行的删除,不过这种方式成本太高,我们可以通过git checkout – <file> 命令来撤销工作区的代码修改。

如下图:

首先我们执行了 git status 命令,发现工作区是干净的,然后执行了 cat 命令,发现文件只有两行内容,然后通过 vi 编辑器向文件中添加一行,保存并退出,退出来之后又执行了 git status 命令,此时工作区的状态已经发生变化,然后我们执行了 git checkout – git01.txt 命令,表示撤销之前的操作,让 git01.txt 恢复到之前的状态,该命令执行成功之后,我们再执行 cat 命令发现文件内容已经恢复了,此时再执行 git status,状态也恢复了。

总结

git status
回显 modified:	yourfile

git checkout -- yourfile

git status
回显working tree clean

2. add到暂存区的代码想撤销

如果想要撤销,但是代码已经提交到暂存区了,不用担心,也能撤销,分两个步骤:

  • 将暂存区的代码撤销到工作区
  • 将工作区的代码撤销(具体操作和1小节一致)

将暂存区的代码撤销,我们可以使用 git reset HEAD 命令来实现。

如下图:

这里的代码都比较简单,核心的过程就是先执行 git reset HEAD 命令,从暂存区撤销,剩下的操作参考 1 小节。

总结

git add afile
git status
git reset HEAD
git status
git checkout -- afile
git status

3. 提交到本地仓库的代码想撤销

同样的,提交到本地仓库的代码一样也可以撤销,我们可以利用 git reset --hard <版本号> 命令来实现版本回退,该命令中的版本号有几种不同的写法:

可以使用 HEAD^ 来描述版本,一个 ^ 表示前一个版本,两个 ^^ 表示前两个版本,以此类推。

也可以使用数字来代替 ^,比如说前 100 个版本可以写作 HEAD~100。

也可以直接写版本号,表示跳转到某一个版本处。我们每次提交成功后,都会生成一个哈希码作为版本号,所以这里我们也可以直接填版本号,哈希码很长,但是我们不用全部输入,只需要输入前面几个字符即可,就能识别出来。

看下面一系列的操作:

通过 git log 查看当前提交日志:

git log --pretty=short

通过 git reset HEAD^^ 向前回退两个版本:

git reset --hard HEAD^^

查看日志,发现最后一次提交的版本号是 695ce1fe,利用 git reset --hard 695ce1fe 命令回退:

git reset --hard 695ce1fe

通过 git reset --hard HEAD~1 回到上一个版本:

git reset --hard HEAD~1

当然以上操作都是基于命令行的,如果你命令行操作比较熟练的话,其实命令行操作比 IDEA 上点点点要快很多。

4. 远程仓库的代码想要撤销

如果代码提交到远程仓库了,想要撤销,那就如 3 小节所讲,先在本地仓库撤销,然后 push 到远程仓库即可。

二、基于 IDEA

1. 未提交就撤销

对于第一小节的前两种撤销操作,即修改的文件还没 commit,此时想要撤销,方式很简单,点击 IDEA 右上角的撤销按钮:

如果你修改了文件,无论有没有执行 git add 命令,只要没有 commit,都可以通过这个按钮撤销修改,点击该按钮,弹出如下提示框:

这里会列出来所有修改但是没有 commit 的文件,想要撤销哪个文件的修改,就勾选该文件,然后点击 Rollback 按钮就完成了撤销操作。

2. commit 了想撤销

如果已经 commit 了,那么就需要先打开提交日志,点击如下按钮打开:

也可以直接点击 IDEA 右上角的时钟图标,快速打开提交日志:

提交日志类似下面这样:

此时的回退就分情况了。

首先这个撤销操作分两种:

  • Revert Commit
  • Undo Commit

我们分别来看。

Undo Commit

Undo Commit 这个操作只能在最近一次提交上使用,不能在其他提交上使用,最近一次 commit 上,右键单击,如下图:

其他的 commit 上右键单击:

既然如此,我们就来看看最近的一次 commit 如何 Undo Commit。

在最近一次 commit 日志上右键单击后选择 Undo Commit,如下图:

选中后,直接点击 OK,撤销最近一次的 commit。

这就是撤销最近一次 commit,撤销之后,本地的修改相当于变成了已 add 但是未 commit 的状态,此时我们可以继续开发新代码,然后再 commit,再 push;或者也可以像 1 小节介绍的那样,继续撤销操作。

我电脑上的 IDEA 在这块操作中有个偶发性问题,就是撤销掉 commit 之后,IDEA 检测不到文件处于未提交状态,需要我把 IDEA 关掉重新打开,IDEA 就能发现文件处于未提交状态了,此时就可以按照 1 小节的步骤继续回退了,这块小伙伴们在试验的时候可以留意下。

Revert Commit

Revert Commit 这个操作到处都能用,不同于 Undo Commit,Revert Commit 之后,会产生一条提交记录。相当于 Revert Commit 其实也是提交,只不过提交的内容刚好相反,刚好刷掉已有内容。

Revert Commit 操作可以用在所有的日志上,而不仅仅是刚刚提交的 commit。

操作方式如下:

找到需要回滚的地方,右键单击,选择 Revert Commit:

此时会弹出来一个提交的对话框,就是一个普普通通的 commit 对话框,如下:

commit 之后,可以看到内容已经撤销了,提交日志中也多了一条记录,如下图:

3. push 了想撤销

如果已经 push 到远程仓库了,怎么撤销?

其实跟 2 小节一样,先在本地仓库撤销,撤销完成后,重新修改代码,最后再 force push 就行了,不过 force push 的时候,注意别把同事的代码给覆盖了。

所以一定是先commit到本地仓库,改完确认了再push到远程仓库。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持程序员之家。

相关文章

  • Postman设置环境变量的实现示例

    Postman设置环境变量的实现示例

    本文主要介绍了Postman设置环境变量的实现示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • vscode使用restClient实现各种http请求的操作方法

    vscode使用restClient实现各种http请求的操作方法

    这篇文章主要介绍了vscode使用restClient实现各种http请求的操作方法,定义变量以及使用环境变量和返回数据作为变量的操作代码,感兴趣的朋友跟随小编一起看看吧
    2024-02-02
  • Git 2.27.0详细安装步骤详解

    Git 2.27.0详细安装步骤详解

    这篇文章主要介绍了Git 2.27.0详细安装步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • git提交出现commit提醒信息界面怎样退出

    git提交出现commit提醒信息界面怎样退出

    这篇文章主要介绍了git提交出现commit提醒信息界面怎样退出问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • 关于提交项目到gitee报错Push to origin/master was rejected的问题

    关于提交项目到gitee报错Push to origin/master was rejected的问题

    这篇文章主要介绍了提交项目到gitee报错Push to origin/master was rejected的解决办法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • 在Visual Studio中使用GIT进行源码管理

    在Visual Studio中使用GIT进行源码管理

    这篇文章介绍了在Visual Studio中使用GIT进行源码管理的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • 如何在网页中显示服务器时间

    如何在网页中显示服务器时间

    在网页上显示时间,如果取的是用户本机的时间,由于用户的时间往往不准确,所以显示的有问题。而服务器时间一般不会误差太大,所以最好显示服务器时间
    2013-03-03
  • 详解Metrics应用监控指标的使用说明

    详解Metrics应用监控指标的使用说明

    这篇文章主要为大家详细的介绍了Metrics应用监控指标的使用说明,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-02-02
  • 比较全的获得ip地理信息的几种方法小结

    比较全的获得ip地理信息的几种方法小结

    有时候我们需要获取ip的地理信息,方便引导用户访问或统计,需要的朋友可以参考下
    2012-02-02
  • Postman 使用指南及小技巧

    Postman 使用指南及小技巧

    Postman 简化了构建 API 的每个步骤,并简化了协作,这样就可以更快地创建 API。接下来通过本文给大家介绍Postman 使用指南及小技巧,感兴趣的朋友跟随小编一起看看吧
    2021-12-12

最新评论

?


http://www.vxiaotou.com