日常开发中,经常会遇到在当前分支开发到一半,但是需要Checkout上个版本解决bug或调查问题的情况。这个时候,我们是将代码提到Push远程?还是直接Rollback?

最理想的做法,就是将当前的开发分支修改的代码暂存起来,然后将开发分支恢复到最初的状态,再切换到我们需要的分支去处理问题,处理完成后,我们还可以切换到开发分支上,将暂存的代码恢复回来,继续开发。

在IDEA中,就有一个这样的功能,叫做Shelve Changes。Shelve的中文意思是“搁置;将。。。放到架子上”,看到它的中文含义,相信读者会更加明白它的作用。

Shelve使用起来很简单,在IDEA下方的Git面板中(IDEA 2020中是Git,2020版本之前是VersionController),有一个部分叫做Local Changes,这里面是我们在当前分支做的所有的修改,如下:




在Local Changes中,我们可以自行选择需要搁置的代码(可以多选),然后右键选择“Shelve Changes”,如下:




在弹出的Shelve Changes窗口中,需要填写一下搁置备注(方便以后确认需要恢复的代码,很贴心的功能),最后点击【Shelve Changes】按钮即可将代码搁置起来,如下:




代码搁置完成后,我们可以在Git面板中的Shelf中,查看被搁置起来的代码,如下:




当开发分支的已修改代码都被搁置的时候,就可以直接切换分支了,不需Push或Rollback了。

如果想要将被搁置的代码恢复,只需要选中被搁置的代码,然后右键选择“UnShelve Changes”即可,再弹出的“UnShelve Changes”窗口中,直接点击【UnShelve Changes】按钮即可恢复代码,如下:






当然,我们也可以直接将被搁置的代码删除掉,如下:




但是如果搁置代码没有恢复,那么被删除的搁置代码不就没了吗?难道还要重新开发?IDEA贴心就在于,被误删除的搁置代码可以在“Recently Deleted”中找到并恢复,绝对的手残友好党...如下:






当然,在“Recently Deleted”还可以再一次进行删除操作,这次删除,可就真的删除了,找不回来的...如下:




以上就是IDEA中很实用的Shelve功能的一个使用介绍,有问题可以留言,看到必回。

IDEA_Shelve代码搁置与恢复的更多相关文章

  1. SQL Server安全(6/11):执行上下文与代码签名(Execution Context and Code Signing)

    在保密你的服务器和数据,防备当前复杂的攻击,SQL Server有你需要的一切.但在你能有效使用这些安全功能前,你需要理解你面对的威胁和一些基本的安全概念.这篇文章提供了基础,因此你可以对SQL Se ...

  2. mysql 恢复

    一.备份的目的 做灾难恢复:对损坏的数据进行恢复和还原需求改变:因需求改变而需要把数据还原到改变以前测试:测试新功能是否可用 二.备份需要考虑的问题 可以容忍丢失多长时间的数据:恢复数据要在多长时间内 ...

  3. 反混淆:恢复被OLLVM保护的程序

    译者序: OLLVM作为代码混淆的优秀开源项目,在国内主流app加固应用中也经常能看到它的身影,但是公开的分析研究资料寥寥.本文是Quarkslab团队技术博客中一篇关于反混淆的文章,对OLLVM项目 ...

  4. X86驱动:恢复SSDT内核钩子

    SSDT 中文名称为系统服务描述符表,该表的作用是将Ring3应用层与Ring0内核层,两者的API函数连接起来,起到承上启下的作用,SSDT并不仅仅只包含一个庞大的地址索引表,它还包含着一些其它有用 ...

  5. chrome79开发者工具代码高亮失效的解决办法

    升级chrome最新版本后,存在开发者工具Sources内代码高亮失效的情况 解决办法: 1. 开发者工具面板右上角菜单->Setting->Preferences 2. 将Theme切换 ...

  6. git恢复彻底删除的分支

    由于一时疏忽,错误的删除了未发布正式的开发分支,经查资料已恢复分支,特此记录 查看Git日志 git reflog |grep 'filter_or_gwf' 以下日志为已删除分支 filter_or ...

  7. [转载]基于TFS实践敏捷-Scrum模式运用

    根据Forrester Research今年第二季度的一份研究报告,在超过1000名专业开发人员中,采用敏捷模式进行软件开发的已经有10.9%采用了Scrum模式,在所有的敏捷开发模式中名列首位,而在 ...

  8. Mac svn使用学习-4-客户端cli命令详解

    客户端cli的使用 WC:Working Copy 你的工作区 将文件或目录版本化,这样下一次提交到存储库的时候,他们就都会被提交上去.能实现版本化的命令有: add 1.import 是否访问存储库 ...

  9. [转]基于Visual Studio 2010 进行敏捷/Scrum模式开发

    http://www.infoq.com/cn/articles/visual-studio-2010-agile-scrum-development 根据Forrester Research今年第二 ...

随机推荐

  1. Redis的事件机制

    目录 一.Redis的运行过程 二.事件数据结构 2.1 文件事件数据结构 2.2 事件事件数据结构 3.3 事件循环 三.事件的注册过程 3.1 文件事件的注册过程 3.2 时间事件的注册过程 四. ...

  2. 报错:invalid operands to binary - (have ‘int’ and ‘char *’)

    //这个题是输入大写的一串字符,然后按A对应1...这个规律求乘积 char a[],b[]; scanf("%s",a); scanf("%s",b); in ...

  3. 移动端rem字体适配JS

    // 『REM』手机屏幕适配,兼容更改过默认字体大小的安卓用户 function adapt(designWidth, rem2px) { // designWidth:'设计图宽度' 1rem==r ...

  4. 移动端宽高适配JS

    //定义全局变量 var winWidth = 0; /*窗口宽度*/ var winHeight = 0; /*窗口高度*/ //函数区 //实时获取浏览器窗口大小,当窗口大小变化开始相应操作 fu ...

  5. Day01_虚拟化架构与系统部署

    学于千峰教育开源课程 感恩 千峰教育官网 b站在线视频 前言:本人所使用的操作系统是MacOS 使用的虚拟机软件为parallels desktop 本章结构 构建桌面端虚拟环境 虚拟机的概述 VMa ...

  6. PHP array_splice() 函数

    实例 从数组中移除元素,并用新元素取代它: <?php$a1=array("a"=>"red","b"=>"gr ...

  7. luogu P3264 [JLOI2015]管道连接

    LINK:管道连接 一张无向图 有P个关键点 其中有K个集合 各个集合要在图中形成联通块 边有边权 求最小代价. 其实还是生成树问题 某个点要和某个点要在生成树中 类似这个意思. 可以发现 是斯坦纳树 ...

  8. 在Ubuntu18.04系统里面安装VMware tools遇到的问题 以及解决办法

    问题1:Ubuntu18.4下安装VMware Tools 一直提示 “what is the location of the ifconfig program on your manchine”. ...

  9. tensorflow2.0 实现gpu和cpu切换

      昨天把GPU版本的tf2.0 安装成功之后,现在所有的代码运行居然都在gpu上跑了,并且在对gpu使用情况没有限制的条件下,既然gpu内存跑满了,代码就崩了怎么样才能随心所欲的指定代码是在cpu还 ...

  10. Android ExpandListView的用法(补上昨天的)(今天自习)

    今天自习写ExpandListView的作业,昨天没写博客就是去写作业去了. 今天来说昨天内容吧! 其实ExpandListView和ListView的用法大同小异. 首先就是创建一个自己的适配器(现 ...