IntelliJ的Shelve和Git隐藏之间有什么区别?


Answers:


66

从IntelliJ 文档中

在Git集成中,除了搁置和搁置外,还分别支持“隐藏”和“隐藏”。这些功能有很多共同点,唯一的区别是补丁的生成和应用方式。

  • 带有隐匿更改的补丁由Git本身生成。要稍后应用它们,您不需要IntelliJ IDEA。
  • 具有搁置更改的补丁程序是由IntelliJ IDEA生成的。通常,它们也可以通过IDE应用。也可以在IntelliJ IDEA外部应用搁置的更改,但需要其他步骤。

21
那么,既然搁架与普通git的兼容性较差,那么搁架的优点是什么呢?
MaxiWheat

17
如果您使用的VCS没有本机存储样式功能,则搁置似乎很有用。如果您使用git,我看不到任何真正的好处。
丹尼尔·康普顿

4
“真正的好处”在id.bobr的答案中列出。对我而言,最主要的是能够选择要存储的文件/块,就像提交时一样。
Martin Melka '18

从Git 2.13开始,可以使用存放单个文件git stash push
Deric Lima

45

它们非常相似,除了:

  • 您不能在IDE外部使用搁板,因为这是Intellij的功能。
  • Git隐藏仅适用于整个工作目录和索引。IntelliJ的货架可以处理单个文件和变更列表(IntelliJ的另一个功能)。如您所见,例如在这里,有时是必要的。
  • Idea具有更好的内置货架支持。使用git stash更直接。特别是,您可以搁置\取消搁置更改,或从版本控制工具窗口中查看搁置的文件。

此外,恕我直言,搁置的工作速度略快,尤其是在大型项目中,当更改了许多文件时。

请参阅文档以获取更多信息。


我发现右键单击不变的东西以快速搁置它非常有用。正如您所提到的,我发现它更快一些。
北欧海盗'17

3
“ Git隐藏仅适用于整个工作目录和索引”-这是错误的。Git隐藏也可以隐藏单个文件和文件夹-例如:git stash -- foo/bar.txt
Chaoz

20

Intellij的Shelve与普通Git的存储相比具有一个明显的优势,就是使用Shelve,您可以将属于多个存储库的更改保存在一个变更列表中。使用存储,您需要分别在每个存储库中存储/取消存储。这在具有多个模块(每个模块都有自己的存储库)的大型项目中非常有用,其中特定功能的工作可能会跨越多个模块(因此有多个存储库)


0

这里是什么文件

存放更改与搁置非常相似。唯一的区别在于补丁的生成和应用方式。缓存是由Git生成的,可以在IntelliJ IDEA内部或外部应用。具有搁置更改的补丁程序是由IntelliJ IDEA生成的,也可以通过IDE应用。此外,存储涉及所有未提交的更改,而将更改放入架子时,您可以选择一些本地更改而不是将其全部搁置。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.