IntelliJ的Shelve和Git藏匿有什么区别?

时间:2015-10-07 01:11:21

标签: git intellij-idea git-stash

IntelliJ支持git stashes以及它自己内置的shelve命令。这些似乎在目的和效用上几乎相同。他们之间有什么区别?

4 个答案:

答案 0 :(得分:55)

来自IntelliJ documentation

  

在Git集成中,除了搁置和搁置之外,还分别支持“存储”和“取消搁置”。这些功能有很多共同之处,唯一的区别在于补丁的生成和应用方式。

     
      
  • Git本身会生成带有隐藏更改的修补程序。要在以后应用它们,您不需要IntelliJ IDEA。
  •   
  • IntelliJ IDEA生成带有搁置更改的修补程序。通常,它们也通过IDE应用。在IntelliJ IDEA之外应用搁置的更改也是可能的,但需要额外的步骤。
  •   

答案 1 :(得分:26)

它们非常相似,除了:

  • 你不能在IDE之外使用搁置,因为它是Intellij的功能。
  • Git stash仅适用于整个工作目录和索引。 IntelliJ的搁置可以使用单个文件和更改列表(另一个IntelliJ的功能)。正如您所看到的,例如,here,有时是必要的。
  • Idea有更好的内置支持搁置。使用git stash更简单。特别是,您可以搁置\取消搁置您的更改或从版本控制工具窗口查看搁置的文件。

此外,恕我直言,搁置的工作速度稍快,尤其是在大型项目中,当大量文件发生变化时。

有关详细信息,请参阅documentation

答案 2 :(得分:10)

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

答案 3 :(得分:0)

Documentation这样说

  

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