场景

当我提交了本次修改到本地和远程分支后,发现我本次提交还少了一些修改内容,或者说本次修改是完全错误的,然而也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。

步骤

在想要回退历史版本上单击鼠标右键,选择“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指针时,保留当前工作区里的文本内容。这样方便直接修改,适合于提交的内容有误,只想修正回来就可以了这种情况。(对比效果见下图)

在回退过程中,可能您的情况不会像本实验那么简单,也就是说会出现冲突情况。那么只需要解决冲突即可。

结尾

除了Hard和Mixed选项,其它回退选项的效果演示可以访问这里: Git Reset 模式演示

回退版本的方法可能还有很多,本次实验也是片面的。难免有些错误遗漏的地方,还请各位老师们不要吝惜各自的才华,恳请老师们多多指正

到此这篇关于详解IDEA git分支回退指定的历史版本的文章就介绍到这了,更多相关IDEA git分支回退指定历史版本内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

时间: 2020-08-01

idea 回退merge_详解IDEA git分支回退指定的历史版本相关推荐

  1. Git详解之六 Git工具

    Git详解之六 Git工具 Git工具 现在,你已经学习了管理或者维护 Git仓库,实现代码控制所需的大多数日常命令和工作流程.你已经完成了跟踪和提交文件的基本任务,并且发挥了暂存区和轻量级的特性分支 ...

  2. python open 打开是什么类型的文件-详解Python中open()函数指定文件打开方式的用法...

    文件打开方式 当我们用open()函数去打开文件的时候,有好几种打开的模式. 'r'->只读 'w'->只写,文件已存在则清空,不存在则创建. 'a'->追加,写到文件末尾 'b'- ...

  3. android 最新sdk版本,详解如何在Android studio中更新sdk版本和build-tools版本

    一.首先看下Android开发用到的sdk目录: build-tools 保存着一些Android平台相关通用工具,比如adb.和aapt.aidl.dx等文件. aapt即Android Asset ...

  4. 开发工具:Git 代码回退功能详解,很实用!

    来源:占小狼的博客 从接触编程就开始使用 Git 进行代码管理,先是自己玩 Github,又在工作中使用 Gitlab,虽然使用时间挺长,可是也只进行一些常用操作,如推拉代码.提交.合并等,更复杂的操 ...

  5. [转]Git详解之一 Git起步

    起步 本章介绍开始使用 Git 前的相关知识.我们会先了解一些版本控制工具的历史背景,然后试着让 Git 在你的系统上跑起来,直到最后配置好,可以正常开始开发工作.读完本章,你就会明白为什么 Git ...

  6. android 回退函数,详解React Native监听Android回退按键与程序化退出应用

    详解React Native监听Android回退按键与程序化退出应用 发布时间:2020-09-29 09:25:52 来源:脚本之家 阅读:137 作者:lqh 详解React Native监听A ...

  7. 万字详解,Git 入门最佳实践!

    作者 | gafish 链接 | https://github.com/gafish/gafish.github.com 前言 Git简介 实用主义 深入探索 总结 参考资料 前言 Git 是程序员学 ...

  8. 万字详解!Git 入门最佳实践 !

    前言 Git 是程序员学习和工作都离不开发工具,今天和大家分享 Git 常用命令总结. Git简介 Git 是一种分布式版本控制系统,它可以不受网络连接的限制,加上其它众多优点,目前已经成为程序开发人 ...

  9. 万字详解!Git 入门最佳实践

    点击上方"民工哥技术之路",选择"设为星标" 回复"1024"获取独家整理的学习资料! Git 简介 Git 是一种分布式版本控制系统,它可 ...

  10. Git详解:Git内部原理

    原文地址见伯乐在线:http://blog.jobbole.com/26209/ 2012/09/01 · IT技术, 书籍与教程 · Git, Pro Git, 版本控制 分享到: 36 Andro ...

最新文章

  1. 程序员/设计师能用上的 75 份速查表(转)
  2. PHP数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数的小问题
  3. gradle构建_指定Gradle构建属性
  4. 洛谷1417烹调方案——动态规划:价值受时间影响
  5. ramdisk根文件系统+initramfs
  6. she's gone
  7. php过滤文件中的空行,如何从PHP文本中删除空行?
  8. 拓端tecdat|python用遗传算法 神经网络 模糊逻辑控制算法对彩票乐透数据进行预测
  9. jQuery和asp.net mvc相关资源链接
  10. 实现贪吃蛇程序的整个代码:
  11. 例外被抛出且未被接住--服务端与客户端隐藏
  12. 瑞盟国产MS523非接触式高集成读写卡芯片,PIN对PIN兼容替换RC522/RC523/CV520/PN512/FM17550/FM17520/FM17522/MH1608/NZ3801A/ZS3
  13. 使用Python将PDF转换成图片
  14. Jupyter notebook 运行时出现 “服务似乎挂掉了,但是会立刻重启的”
  15. int数据超出范围的值变化
  16. 支付设计白皮书:支付系统的总架构
  17. 2022全新好玩的恶搞屁声音小程序源码+UI不错
  18. su vs sudo的区别
  19. 使用 Javascript 与 Flow 交互
  20. Snowboy 声音识别

热门文章

  1. STM32物联网套件基础版03-控制继电器
  2. php获取企业微信聊天内容,微信企业号开发获取用户信息的介绍
  3. 【微软内推】微软2023届校园招聘开始啦
  4. ei检索的cpss_国际检索系统收录我校期刊
  5. XML配置文件的读取
  6. ubuntu20.04 + kiosk + chrome打造一体机系统
  7. 常见安全漏洞及其解决方案
  8. date_sub函数用法-----随笔记
  9. Code Craft(编程匠艺)之代码的生命(一)
  10. android高仿小米时钟,Android仿小米时钟效果