IDEA中如何实现 git stash 命令的可视化操作?

这篇具有很好参考价值的文章主要介绍了IDEA中如何实现 git stash 命令的可视化操作?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

问题现象:

问题分析:

拓展:git stash 相关命令

1、git stash

2、git stash save '注释'

3、git stash list

4、git stash pop

5、git stash apply stash@{编号}

6、git stash drop stash@{编号}

7、git stash clear

8、git stash show

  解决方法:


问题现象:

        今天在项目想到一个问题:

        在同一个代码仓库中,如果我在当前分支(如:task/111-001-demo)上正在敲着代码,还没完成的;突然来个紧急任务要我切换到另一个分支(如:emergency)去修复某个bug或新增某个功能,那我当前分支还没写完的代码该怎么处置/保存呢?很显然我们需要在切换分支之前保存当前分支上的代码改动。

        那么问题来了:

        在切换分支之前该如何保存当前分支上的代码改动呢?

        最近发现了一种新的方法:就是使用 git stash 命令就可以很完美地解决上面这个问题,但在实际开发过程中很多人都是能不敲命令就不敲命令,于是就引出了一个新的问题:

        IDEA中如何实现 git stash 命令的可视化操作?


问题分析:

        我们可以分析一下上面这种情况:

1、由于是紧急任务(如:生产环境出现bug需要尽快解决),那么该任务优先级必然是最高的,需要优先处理。

2、由于紧急任务所在代码分支与当前代码的分支不同,因此需要切换分支。

3、当前分支有尚未完成的代码,需要保存,因为直接切换分支会导致当前分支上的改动丢失。

        OK,问题要素分析完了,可以发现最关键就是要保存当前代码的改动!那么顺序就应该是:

1、保存当前代码分支(如:task/111-001-demo)的改动;

2、切换到紧急任务分支(如:emergency);

3、解决紧急任务;

4、切换回当前分支(如:task/111-001-demo)继续开发之前尚未完成的代码。

        切记:在多人协作开发的场景下,不要把当前分支未完成开发的代码 commit并push 到远程库,然后直接去做你的紧急任务去了。因为远程库的改动很容易影响到其他开发者。

        那么在切换分支之前该如何保存当前分支上的代码改动呢?下面提供2种我以前常用的笨方法:

        1、将当前分支下发生了改动的文件都拷贝一份到某个自定义的备份目录中,后期切换回当前分支时再拷贝回去。

        优点:将发生改动的文件都备份起来,这样绝对不会发生丢失的问题。

        缺点:操作复杂而繁琐,如果要精确到具体发生改动的文件,则不仅需要挑出这些文件,还需要记录这些文件对应的存放路径;或者将整个父级目录备份,但很可能会包含没有发生改动过的文件,因此在子文件很多的时候,有些浪费时间和精力。

        2、在当前分支commit,后期切换回当前分支时可以直接在之前commit后的基础上继续开发。

        优点:操作简单方便,由于commit是提交到本地库,因此不会影响到远程库,也不会影响到其他开发者。

        缺点:当开发完成,需要push到远程库时,则需要执行commit和push操作,因此最终远程库上就会出现多条commit日志。

        那么,除了上面提到的2种笨方法之外,有没有更完美的第3种方法呢?

        确实有的,那就是使用 git stash 命令

        3、在当前分支,使用 git stash 操作可以将本地库对当前分支的所有改动放入本地缓存区(该缓存区未被删除,则会一直存在于本地库中),缓存完后当前分支就会回复到上一次从远程库pull之后的状态,此时可以直接切换到紧急任务分支去了,后期切换回当前分支时,重新加载本地缓存区即可还原到缓存前的状态。

        优点:不会影响远程库,也不需要commit操作。

        缺点:没有什么明显的缺点,硬要说的话,就是操作会比直接commit的操作复杂一点点。

        最近我才发现 git stash 命令的好用之处,估计也有很多小伙伴在实际开发中未曾使用过 git stash 命令。

        我猜:原因大概是因为在IDEA中,我们可以很明显的点击可视化按钮,如下:

idea stash,Git代码仓库,IDEA,git

idea stash,Git代码仓库,IDEA,git

         来快速实现commit和push操作,而不需要敲任何git命令。


拓展:git stash 相关命令

1、git stash

        创建stash缓存/暂存,保存当前分支的本地工作区与暂存区的状态,stash名为stash@{编号}。

2、git stash save '注释'

        创建stash缓存/暂存,保存当前分支的本地工作区与暂存区的状态,stash名为stash@{编号},并添加注释。与 git stash 的区别是:可以加注释。

        git stash save 'test git stash 001'

3、git stash list

        查看stash列表,可以看到本地库中当前分支上的创建的所有stash。

4、git stash pop

        还原至最新的一个stash(即stash@{0})的状态,并删除该stash。

        注意:该命令会在还原至stash@{0}的状态后,删除stash@{0}。

5、git stash apply stash@{编号}

        还原至指定stash(即stash@{编号})的状态。与 git stash pop 的区别是:不会删除stash,所以还原stash的时候,建议使用apply命令。

        使用方法:git stash apply stash@{编号}

6、git stash drop stash@{编号}

        删除某个指定stash,无法指定多个,一次只能删除一个。

        使用方法:git stash drop stash@{编号}

7、git stash clear

        删除全部的stash。

8、git stash show

        查看堆栈中最新保存的stash(最新保存的stash名一定是:stash@{0})和当前分支(缓存完后当前分支就会回复到上一次从远程库pull之后的状态)的差异,显⽰做了哪些改动。

        例如StaticClass.java文件,我敲了2个回车,则show结果如下:

idea stash,Git代码仓库,IDEA,git

        对比stash@{0}和当前分支差异之后,检测到路径为:

        src/main/java/com/stephen/javademo/statictest/StaticClass.java 

        有1个文件,和上一次从远程库pull之后的状态相比,发生了2个插入改动(2个回车符)。


        上面的拓展节点中,给大家介绍了一些git stash的常用命令,那么在实际开发中,是不是就一定要敲命令呢?

       【我知道有些人是比较懒或记性差的,我自己也是,能鼠标操作的,绝对敲命令,而且我也不想即命令。。。。。。这一点,请大家不要向我学习。】

        经过实践,我终于在IDEA开发工具中摸索出了最简单的stash使用方式。


  解决方法:

        缓存/暂存本地库中对当前分支的所有改动,在IDEA开发工具中的操作步骤如下:

        1、创建stash:点击菜单栏的 VCS-Git-Stash Changes... :

idea stash,Git代码仓库,IDEA,git

        弹出窗口如下,输入Message,勾选Keep index,点击 Create Stash按钮,如下:

idea stash,Git代码仓库,IDEA,git

        这一步其实就相当于调用了命令 git stash save 'test stash1';

        而 Keep index 的作用,直接上图吧:

idea stash,Git代码仓库,IDEA,git

        翻译过来的意思就是说:如果选中此复选框,则索引更改将保存在索引中。

         这个功能我就先不探究了,留给刚兴趣的小伙伴去实践一下,目前我就建议大家直接勾选就好了。

         2、查看stash列表:点击菜单栏的 VCS-Git-UnStash Changes... :

idea stash,Git代码仓库,IDEA,git

        弹出窗口,在Stashes项中可以看到我创建了4个stash,从上到下(从0到3)分别是最新到最旧。

idea stash,Git代码仓库,IDEA,git

        除此之外,还发现该窗口有很多非常实用功能,而且还对应了拓展节点中提到的大部分常用的 git stash 命令,例如:

        View:可以查看选中的stash中记录了什么文件及文件中的改动,如我选中第一个stash点击View:

idea stash,Git代码仓库,IDEA,git

        双击打开窗口中的StaticClass.java文件,可以查看具体的改动,如:

idea stash,Git代码仓库,IDEA,git

        Drop:相当于git stash drop stash@{编号},可以删除选中的stash。

        这里我测试一下删除最后一个stash(即stash@{3}),如图:

idea stash,Git代码仓库,IDEA,git

idea stash,Git代码仓库,IDEA,git

      

        Clear:相当于git stash clear,删除所有的stash。

        测试Clear,如图:

idea stash,Git代码仓库,IDEA,git

         点击Yes后,所有stash被删除:

idea stash,Git代码仓库,IDEA,git

        Pop stash:勾选之后,会发现原来的Apply Stash按钮变成了Pop Stash,就相当于git stash pop命令,还原至选中的stash,并删除该stash。 

        测试Pop Stash选中的stash(stash@{2}):

idea stash,Git代码仓库,IDEA,git

        可以发现Pop Stash之后,stash@{2}被自动删除了。

        Apply Stash:相当于git stash apply stash@{编号}命令,还原至选中的stash。

        测试Apply Stash选中的stash@{1}之后,发现stash@{1}还存在,未被自动删除。

idea stash,Git代码仓库,IDEA,git

        至此就完成了IDEA中实现 git stash 命令的可视化操作了。文章来源地址https://www.toymoban.com/news/detail-778171.html

到了这里,关于IDEA中如何实现 git stash 命令的可视化操作?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • GIT实战篇,教你如何使用GIT可视化工具

    手把手教你安装Git,萌新迈向专业的必备一步 GIT命令只会抄却不理解?看完原理才能事半功倍! 快速上手GIT命令,现学也能登堂入室 经过前三期的学习,不管是GIT模型还是GIT命令,相信大家都已经有了比较全面的了解。当然,尽管GIT命令永远是最强大而全面的,但并不是说

    2024年02月10日
    浏览(32)
  • 如何实现电商数据可视化

    一、什么是API? API,即Application Programming Interface,翻译过来就是“应用程序编程接口”。它是用于不同软件和应用之间进行交互的一种技术规范。通过API,我们可以让两个应用程序之间进行数据和功能的交换和共享,从而实现更加复杂的数据分析和可视化效果。 二、电商A

    2024年02月10日
    浏览(38)
  • 【Git】Git 操作命令可视化(五):git clone、git fetch、git pull、git push、git pull --rebase、解决远程仓库与本地仓库的代码冲突

    1. git clone main是本地的main分支,o(origin)/main是表示本地拉去下来的远程的main分支 o/main分支记录了远程仓库拉取时的分支状态 远程分支有一个特别的属性,在你切换到远程分支时,git会自动进入分离 HEAD 状态(这样做是因为git不想让你在本地就能直接进行修改远程仓库代码的

    2024年02月08日
    浏览(50)
  • 电商平台数据可视化如何实现

    一、什么是API? API,即Application Programming Interface,翻译过来就是“应用程序编程接口”。它是用于不同软件和应用之间进行交互的一种技术规范。通过API,我们可以让两个应用程序之间进行数据和功能的交换和共享,从而实现更加复杂的数据分析和可视化效果。 二、电商A

    2024年02月09日
    浏览(87)
  • 如何通过TortoiseGit可视化工具查看Git管理的版本树和信息(工作树变更)内容

    黑色直线:master分支和基于master分支拉取基础分支都在这条线上,是一条直线。 其他线条:新开分支一定会增加一条线,但不一定每一条线分别代表一个分支。 注:如果一直是一个人,在同一个本地分支改的话,会一直是这条黑线。 即: 新的分支commit的差异,会产生新的支

    2024年02月04日
    浏览(89)
  • MongoDB 数据库数据导入 - 关于如何使用 csv 导入数据的命令方法、图形界面可视化导入方法

    兴趣使然,突发奇想,想到了就写,就当打发时间了。 csv文件路径问题,绝对路径和相对路径都可以 type 没有=号,也是可以的,空格自动识别 将 测试表.csv 文件导入到 mongodatabase 库, mycollection 集合中,导入时必须指定列名称 (如果 csv 文件第一行是列名称,也会被当成数据

    2023年04月22日
    浏览(45)
  • 如何在移动端数据可视化大屏实现分析?

    本文由葡萄城技术团队于博客园原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 项目想做数据可视化,想同时在PC端、手机端查看数据怎么办?业务主要关心的数据包括:销售数据、业绩达成、同比、环比,各

    2023年04月14日
    浏览(42)
  • 关于如何实现autodl服务器的可视化桌面

    目录 目录 目录 安装VNC 在AutoDL主机中安装桌面 参考连接VNC远程桌面配置教程 https://blog.csdn.net/AngelFK1990/article/details/130649525?spm=1001.2101.3001.6650.2utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EYuanLiJiHua%7EPosition-2-130649525-blog-78090079.235%5Ev38%5Epc_relevant_sort_base3depth_1-utm_source=distribu

    2024年01月15日
    浏览(28)
  • 如何实现数据可视化分析?有这个解决方案就够了

    在这个数据呈爆炸式增长的时代,每天都有海量数据在产生。如何通过简单的方式实现业务上的分析、计算、交互,并最终呈现出可视化的分析结果,帮助业务人员更好地理解数据的价值,将数据变现,是当前众多企业都需要面对的问题。 想要直观准确地从不同领域中的数据

    2024年02月06日
    浏览(28)
  • 如何将GIS地图和可视化结合使用实现更好的数据呈现

    GIS(地理信息系统) 和 可视化(visualization) 是两个紧密相关的领域。GIS是一种用于管理、分析和展示地理空间数据的技术,而可视化则是一种用图形、图表、动画等形式展示数据的方式。 GIS地图 则是指基于地理信息系统技术,将各种地理数据在一个地图上进行展示的地图

    2023年04月22日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包