IntelliJ's Shelve和Git的区别是什么?

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

从IntelliJ 文档 :

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

  • Git本身会生成包含更改的修补程序。 稍后应用它们,您不需要IntelliJ IDEA。
  • 具有搁置更改的修补程序由IntelliJ IDEA生成。 通常情况下,它们也通过IDE来应用。 在IntelliJ IDEA之外应用搁置的更改也是可能的,但需要额外的步骤。

他们非常相似,除了:

  • 你不能在IDE之外使用搁架,因为它是Intellij的特性。
  • Git存储只适用于整个工作目录和索引。 IntelliJ的架子可以处理单个文件和更改列表(另一个IntelliJ的function)。 正如你所看到的,例如, 在这里 ,有时候这是必要的。
  • 理念有更好的内置支持搁置。 使用git存储更直接。 特别是,您可以搁置\撤消更改或从版本控制工具窗口中查看已搁置的文件。

另外,恕我直言,搁置工作略快,特别是在一个大项目,当大量的文件被改变。

有关更多信息,请参阅文档 。

Intellij's Shelve对于Git存储的一个明显优势是使用Shelve,可以将属于多个Repos的更改保存在一个更改列表中。 使用存储,你需要单独存储/不存储在每个回购。 这对于一个具有多个模块(每个模块都有自己的回购)的大型项目来说非常有用,在这个项目中,一个特定的function可能会跨越多个模块(因此需要多个回购)