IDEA git分支回退指定的历史版本

IDEA git分支回退指定的历史版本

  • 场景
    当我提交了本次修改到本地和远程分支后,发现我本次提交还少了一些修改内容,或者说本次修改是完全错误的,然而也push到远程仓库去了。如何回退?

问题

已经提交到仓库(本地和远程仓库)的内容如何利用IDEA回退到原来指定版本?

方法

1、Revert操作   
2、利用IDEA的Reset Head指针 

影响

方法1的Revert操作会当成一个新的提交记录,追加到提交日志当中,这样便保留了原来的提交记录。
方法2的Reset Head指针,会抛弃原来的提交记录,使Head指针强制指向指定的版本。

实验环境

在这里插入图片描述
上图是实验环境。本次实验只操作Readme.md文件。初始化时,master和演示使用的分支“git_demo”都是指向版本一:“版本1:第一次编辑”文本内容。当前操作分支为git_demo。

说明

本次实验环境未必和您的情况完全相符,不过大致思路是相同的。如果您在解决问题过程中遇到冲突,解决就好了。

方法1:Revert操作

当在版本1基础上进行修改内容,并提交本地、远程仓库后,发现提交的内容不是我想要的,或者是完全错误的,需要回退版本1。

在这里插入图片描述
1

步骤
在想要回退历史版本上单击鼠标右键,选择“Revert”(见下图)

这时弹出冲突对话框,双击冲突文件以解决冲突。(见下图)
在这里插入图片描述

在解决冲突对话框中,决定最终的版本文件。(见下图)

重新提交到本地仓库(见下图)

Push 同步远程仓库(见下图)

这种回退的好处在于,如果后悔了“回退”这个操作,也可以回退到没有回退之前的版本。因为历史记录还保留提交记录。

方法2:Reset Head指针

当在版本1基础上进行修改内容,并提交本地、远程仓库后,发现提交的内容不是我想要的,或者是完全错误的,需要回退版本1。
在这里插入图片描述

步骤
在想要回退历史版本上单击鼠标右键,选择“Reset Current Branch to Here”(见下图)
在这里插入图片描述
在弹出的git reset 参数类型选择框中,选择Hard(见下图),并Reset

本地仓库回退到了版本1,需要同步远程仓库,执行push操作。
在这里插入图片描述
push后,提示Push拒绝。打开Terminal,在本项目目录下,输入git push -f 强制同步远程仓库。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
同步后,会发现,git日志丢失了版本1以后的提交。

总结

  • Revert操作其实就是回退操作,默认是回退到最近一次提交点,也可以回退到指定提交点,就像本次实验演示的。
  • Revert的操作其实也是设置Head指针。
  • 其实比较推荐Revert操作,毕竟可以后悔。方法2中git push -f 强制同步操作并不推荐使用,在团队协作环境中可能会引发问题。
  • 在方法2中,选择git reset参数选择的是hard,这种参数适合场景是我只想回退到指定版本的文本。工作区里的内容可以放弃,版本2完全放弃。其实也可以选择Mixed。Mixed作用是在设置Head指针时,保留当前工作区里的文本内容。这样方便直接修改,适合于提交的内容有误,只想修正回来就可以了这种情况。(对比效果见下图)
    在这里插入图片描述
    在这里插入图片描述
### IntelliJ IDEAGit 回退指定版本 在 IntelliJ IDEA 中,如果想要回退项目至特定的历史提交记录,可以采用 `Revert` 或者更彻底的方式如重置分支。以下是具体方法: #### 使用 Revert 命令来回滚单个或多个提交 当需要保留历史记录并创建一个新的提交来取消之前某次更改的影响时,可以选择此方式。 1. 打开 Version Control 工具窗口 (Alt+9),导航到 Log Tab 查看所有的提交列表。 2. 右键点击要撤消的提交项,在弹出菜单中选择 **Revert Commits...**[^3]。 3. 如果有连续几个提交都需要被撤销,则可以通过按住 Shift 键选取范围再执行上述操作。 4. 进行必要的冲突解决后完成新的提交过程,这将会生成一条带有 "Revert" 字样的新提交,其作用就是抵消选定旧提交所带来的变化[^4]。 这种方法不会改变现有项目的线性发展路径,而是通过增加额外的一笔交易实现目的;因此非常适合团队协作环境下的应用。 #### 利用 Reset 功能直接回到过去的某个状态 对于那些希望完全抹去某些提交及其之后的所有变更的情况来说,Reset 是更为激进的选择。请注意这样做可能会影响到其他开发者的工作副本,所以在共享分支上谨慎行事! - 在同一个 Log tab 下定位目标提交; - 同样右击它,但是这次挑选 **Reset Current Branch to Here...** - 接下来会有三种模式可供选择: - Soft:仅移动 HEAD 指针位置而不影响索引/工作目录文件。 - Mixed(默认选项):更新索引但不触及实际源码内容。 - Hard:不仅调整指针还清除了未跟踪的新文件以及所有本地修改[^1]。 出于安全考虑建议先备份当前改动,并且只对自己私有的特性分支实施硬重置动作。 ```bash # 警告:下面命令会丢失尚未保存的数据,请小心使用! git reset --hard <commit-hash> ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值