IDEA的Shelve与Git的Stash之间的区别

这篇具有很好参考价值的文章主要介绍了IDEA的Shelve与Git的Stash之间的区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

在日常开发中,会遇到需要在不同的开发任务之间切换的情况,此时,如果手中有尚未写完的代码,就需要使用某种方法先保存起来,之后再继续处理没写完的代码。

有两种方法可以解决上述问题:一个是利用IDEA提供的Shelve功能,另一个是利用Git提供的Stash功能。

如果你也是一个使用IDEA作为集成开发环境的话,而且使用的版本控制管理工具也是Git的话,那这篇文章也许对你在日常工作中遇到上面的情况时有所帮助。

本文中介绍了IDEA的Shelve与Git的Stash这两个功能的特点、如何使用、需要注意的地方。

IDEA的Shelve功能

Shelve是一个什么样的功能?

Shelve是IDEA本身提供的一个功能,用来暂时保存尚未commit的修改

注意,这里为什么要特别指出“尚未commit”的修改?

因为IDEA提供的Shelve这个功能只能作用于被版本控制管理的文件。

也就是说,如果你的文件,没有被类似Git、Subversion等版本控制软件管理的话,是无法使用Shelve这个功能的。

Shelve功能有哪些优点?

1.既可以暂存单个文件,也可以暂存整个ChangeList中所有文件。

2.可以根据需要多次应用被Shelve的修改。

如何使用Shelve功能?

  1. Local Changes中找到尚未commit的文件。

  2. 右键点击想要Shelve的文件或整个ChangeList

  3. 选择Shelve Changes...

  4. 会弹出对话框,填写Commit Message一栏(它会作为此次创建的shelf的名字)。

  5. 然后点击Shelve Changes按钮。

  6. 之后,会自动转到Shelf一栏(出现在Local Changes右边),里面放着所有被Shelve的文件。

因IDEA在不断迭代更新,有些地方可能进行了优化导致位置可能发生变化。

所以以上给出的是一个比较通用的方法:直接从Local Changes中找到需要Shelve的文件。

如何使用Unshelve功能?

既然文件的修改被Shelve起来了,肯定还是希望能在某一时刻能恢复回来继续工作。

所以,也就有了对应的Unshelve功能。

大致的步骤如下:

ShelfLocal Changes旁边)页面中,找到需要Unshelve的文件,右键单击在上下文菜单中找到Unshelve...选项,单击后在对话框中填写相关信息,然后点击对话框右下角Unshelve Changes即可。

有哪些需要注意的地方?

Unshelve时,如果当前Local Changes中某个文件已有的修改与Shelve中对应文件的修改位置相同,则会产生冲突。

Git的Stash功能

Stash是一个什么样的功能?

Stash是Git提供的一个功能,会将所有尚未commit的修改进行储存

注意,Stash操作是会将所有尚未commit的文件都一并保存的。

Stash有什么优点?

  1. 可以将Stash的内容应用到一个已存在的分支或者以Stash为基础创建一个新的分支。

  2. Stash的内容可以根据需要多次应用到所需的任何分支上。

如何使用Stash?

  1. Local Changes中找到尚未commit的文件。

  2. 右键点击任意一个文件,出现上下文菜单,将光标移动到Git上。

  3. 右边出现Git的相关选项,点击Stash Changes...选项。

  4. 会弹出对话框,在Message框中填写关于此次stash内容的说明。

  5. 最后,点击Create Stash按钮即可。

这里也是选择了比较通用的方式找到需要被stash的文件,而不需要关心IDEA主菜单上关于Git的变化。

如何使用Unstash功能。

Shelve功能有个对应的Unshelve功能一样,Stash功能也有一个对应的叫UnStash的功能。

UnStash并没有一个像存储着Shelve文件的Shelf页面,而是需要在菜单栏的Git中找。

使用的步骤大致如下:

在IDEA主菜单上,找到Git | Uncommitted Changes | Unstash Changes选项;

出现对话框,选择想要应用stash的分支;

再从stash列表中选择需要应用的stash

最后点击Apply Stash按钮即可。

有哪些需要注意的地方?

  1. 在一系列的commit之后再恢复stash时,可能会导致冲突,需要手动解决。

  2. 恢复stash时,当前的工作区不能有尚未commit的修改。

总结一下两者的区别

  1. Stash是Git提供的功能,而shevle是IDEA本身提供的功能。
  2. Stash只能针对当前整个分支所有未commit的文件进行操作;而Shelve更灵活,可以对单个或多个未commit的文件进行操作;
  3. 要恢复stash的文件时(unstash操作),如果本地有尚未commit的修改,那么此次unstash操作会失败。IDEA右下角会弹出提醒:你的本地修改将会被merge覆盖。请commitstashrevert它们之后再继续。而恢复shelve的文件时(unshelve操作),无论本地有没有被修改的文件都不会影响。解决可能产生的冲突即可。
  4. Stash的文件是放在.git文件中;Shelve的文件是放在.idea/shelf文件中。这意味着Stash的文件比Shelve的文件有更强的可移植性。

最后

本篇文章的目的是为了对IDEA的Shelve和Git的Stash两个功能进行一个大致的比较,并讲解最基础的使用方法。

因此,本篇文章并没有讲解在使用ShelveUnshelveStashUnstash时弹出的对话框中更多的具体选项该如何选择使用,如果希望更好的掌握这两个功能,可进一步查阅资料了解。


本文参考链接:

  • https://www.jetbrains.com/help/idea/2021.3/shelving-and-unshelving-changes.html

  • https://www.jetbrains.com/help/idea/2021.3/work-on-several-features-simultaneously.html

  • https://stackoverflow.com/questions/28008139/git-stash-vs-shelve-in-intellij-idea文章来源地址https://www.toymoban.com/news/detail-448864.html

到了这里,关于IDEA的Shelve与Git的Stash之间的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Git:Rebase和Merge之间的区别

    merge的原理是找到这两个分支的祖先commit,在两个分支最新的commit进行三方对比合并 例如下图,共同的祖先commit2,master最新commit6,develop最新commit5, merge会基于2,5,6 这三个commit进行对比: commit6和commit2对比,如果文件的哈希值不一样,同时commit5和commit2对比,发现一样,说

    2024年02月11日
    浏览(37)
  • Idea使用git拉取代码 : (git merge、git rebase)区别

    我们使用pull拉取远程仓库的代码时,通常有两个选项,一个是 merge ,一个是 rebase ,这两个之间有什么区别呢? 这两个选项都是将远程仓库的代码合并到本地仓库的代码,但是在使用上是不同的。 1、使用merge合并远程仓库的代码是按照代码的提交时间进行展示的,也就是说使用m

    2024年02月16日
    浏览(46)
  • Git Stash 贮藏命令

    在使用Git过程中,有时当你在项目的其它分支正在进行开发,并且该分支还尚未开发完成进行提交,这个时候需要你切换分支进行工作,这个时候做到一半的工作既不想全部丢掉又不想到处都是问题的就commit,十分冲突。解决问题的方法就是 git stash 命令 贮藏(stash)会处理

    2024年02月07日
    浏览(45)
  • git stash 正确用法

    目录 一、背景 二、使用 2.1 使用之前,先简单了解下 git stash 干了什么:  2.2 git stash 相关命令 2.3 使用流程 1. 执行 `git stash`  2. 查看刚才保存的工作进度 `git stash list` 3. 这时候在看分支已经是干净无修改的(改动都有暂存到 stash) 4. 现在就可以正常切换到目标分支,进行相应

    2024年02月20日
    浏览(61)
  • Git Stash详细讲解

             git stash 这个命令可以将当前的工作状态保存到git栈,在需要的时候再恢复。         当在一个分支的开发工作未完成,却又要切换到另外一个分支进行开发的时候,可以先将自己写好的代码,储存到 git 栈,进行另外一个分支的代码开发。这时候 git stash 命令就

    2024年02月02日
    浏览(40)
  • Git stash命令

    Git stash Git stash用来暂存当前正在进行的工作, 将工作区还没加入索引库的内容压入本地的Git栈中,在需要应用的时候再弹出来。比如想pull 最新代码,又不想加新commit;或者为了修复一个紧急的bug,先stash,使返回到自己上一个commit,改完bug之后再stash pop,继续原来的工作。

    2024年02月13日
    浏览(48)
  • Git Stash 命令详解

    目录 背景 用途 常见方法 举例说明         使用git协同开发工具的同学应该都知道,在开发过程中我们需要经常切换分支,例如正在某一个分支下做需求时候,在该需求还未完成时就需要在另外一个分支下进行问题的修改,如果直接git checkout 切换分支会有冲突,会导致切

    2024年02月10日
    浏览(43)
  • git stash怎么恢复

    首先,使用git status指令查看当前文件状态。 然后,使用git stash指令将本次修改部分缓存到本地。 再次使用git status指令,查看当前文件状态,系统提示没有需要提交的内容。 使用git stash list指令,查看本地当前的缓存列表。 使用指令“git stash apply stash@{id}”,恢复指定id的

    2024年01月22日
    浏览(40)
  • git stash 用法小结

    有一天你正兴高采烈地coding…,突然现网出现一个bug让你紧急修复,但是你本地已经有了修改,你又不想提交,也总不能全部回退吧,所以你正发愁怎么办的时候恰好看到了这篇文章,它将帮你完美解决此场景的困扰,那么今天的主角就是 git stash ,它会本地保存当前工作目

    2024年02月08日
    浏览(62)
  • Git stash的用法

    当你代码写到一半而需要切换到其他分支时,此时需要提交本地代码才可以进行切换,然而此时会产生一个非常冗余的commit,所以我们可以通过使用 git stash 将代码推入git栈中,这时候你的工作区间和上一次提交的内容是完全一样的,所以你可以放心的切换分支,等待忙碌切

    2024年02月04日
    浏览(50)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包