Intellij Idea IntelliJ的Shelve和Git stash有什么区别?

oyxsuwqo  于 2023-01-16  发布在  Git
关注(0)|答案(4)|浏览(154)

IntelliJ支持git stashes和它自己内置的shelve命令。这些命令在用途和实用性上看起来几乎相同。它们之间有什么区别?

dfddblmv

dfddblmv1#

从IntelliJ documentation
在Git集成中,除了搁置和取消搁置,还分别支持“stashing”和“unstashing”,这些特性有很多共同之处,唯一的区别是补丁生成和应用的方式。

  • 包含隐藏更改的补丁由Git自己生成,以后要应用它们,不需要IntelliJ IDEA。
  • 包含搁置更改的修补程序由IntelliJ IDEA生成。通常,也可以通过IDE应用这些修补程序。也可以在IntelliJ IDEA外部应用搁置的更改,但需要额外的步骤。
hyrbngr7

hyrbngr72#

它们非常相似,除了:

  • 不能在IDE外部使用shelve,因为它是Intellij的特性。
  • Git stash只能处理整个工作目录和索引,IntelliJ的shelve可以处理单个文件和变更列表(IntelliJ的另一个特性),如here所示,有时候它是必要的。
  • Idea有更好的内置shelve支持,使用git stash更简单,特别是,你可以搁置/取消搁置你的修改,或者在版本控制工具窗口查看搁置的文件。

此外,恕我直言,shelve的工作速度略快,尤其是在一个大项目中,当大量文件被更改时。
有关详细信息,请参阅文档。

pes8fvy9

pes8fvy93#

Intellij的Shelve相对于普通Git的stash的一个明显优势是,使用Shelve,你可以将属于多个repos的更改保存在一个changelist中。使用stash,你需要分别在每个repos中进行stash/unstash操作。这在包含多个模块(每个模块都有自己的repo)的大型项目中非常有用,在这种情况下,一个特定的特性工作可能会跨越多个模块(因此也会跨越多个repos)。

uplii1fm

uplii1fm4#

以下是Documentation的说明
存储更改与搁置非常相似。唯一的区别是生成和应用补丁的方式。存储由Git生成,可以从IntelliJ IDEA内部或外部应用。包含搁置更改的补丁由IntelliJ IDEA生成,也可以通过IDE应用。此外,存储涉及所有未提交的更改,而当您将更改放到shelf时,您可以选择一些本地更改,而不是搁置所有更改。

相关问题