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

10 浏览
0 Comments

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

IntelliJ支持git的储藏(stash)功能,同时也有自己内置的存储(shelve)命令。它们在目的和实用性上几乎相同。它们之间的区别是什么?

0
0 Comments

IntelliJ的Shelve与Git的stash之间的区别是什么?

在大型项目中,使用多个模块(每个模块都有自己的存储库)时,IntelliJ的Shelve相对于Git的stash具有明显的优势。使用Shelve,您可以将属于多个存储库的更改保存在一个变更列表中。而使用stash,您需要在每个存储库中分别进行存储和恢复。这在涉及多个模块(以及多个存储库)的特定功能开发时非常有用。

解决方法:使用IntelliJ的Shelve功能可以在一个变更列表中保存属于多个存储库的更改,而不需要在每个存储库中分别进行存储和恢复。这对于大型项目中涉及多个模块的特定功能开发非常有用。以下是使用IntelliJ的Shelve功能的代码示例:

// 创建一个新的变更列表

git stash save "MyShelve"

// 在变更列表中保存更改

git stash push -m "MyShelve"

// 恢复变更列表中的更改

git stash apply "MyShelve"

// 删除变更列表

git stash drop "MyShelve"

使用IntelliJ的Shelve功能,您可以方便地在一个变更列表中保存和恢复属于多个存储库的更改,而不需要在每个存储库中分别进行操作。这提高了开发效率,并简化了在涉及多个模块的项目中的工作流程。

0
0 Comments

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

IntelliJ的Shelve和Git的stash在很多方面都很相似,但也有一些区别。首先,Shelve是IntelliJ的一个特性,因此无法在IDE之外使用。而Git的stash可以在任何地方使用。

其次,Git的stash只能处理整个工作目录和索引,而IntelliJ的Shelve可以处理单个文件和变更列表。这在某些情况下是必要的,比如这里提到的问题。这使得IntelliJ的Shelve更加灵活。

另外,IntelliJ对Shelve的内置支持更好。与之相比,使用Git的stash更加直接简单。特别是,你可以通过版本控制工具窗口对你的变更进行Shelve、取消Shelve或者查看已经Shelve的文件。

此外,根据个人经验,Shelve的速度稍微快一些,特别是在大型项目中,当涉及到大量文件的变更时。

更多信息可以参考文档。对于我来说,右键点击变更列表来快速进行Shelve非常有用。正如你所提到的,我发现这样稍微快一些。

还有一点需要纠正,"Git stash works only with entire working directory and index"这是错误的。Git的stash也可以处理单个文件和文件夹,例如:git stash -- foo/bar.txt

IntelliJ的Shelve和Git的stash在功能和用法上有一些区别。根据具体的需求和个人喜好,选择适合自己的工具更加重要。

0
0 Comments

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

问题出现的原因:

根据IntelliJ的文档,Git集成中除了支持shelving和unshelving之外,还支持"stashing"和"unstashing"。这两个功能有很多共同点,唯一的区别在于生成和应用补丁的方式。stashed的补丁由Git自身生成,以后可以不需要IntelliJ IDEA来应用它们。而shelved的补丁是由IntelliJ IDEA生成的,通常也是通过IDE应用的。在IntelliJ IDEA之外应用shelved的变更也是可能的,但需要额外的步骤。

解决方法:

shelving和stash的优势是什么?如果你使用的是没有本地stash风格特性的版本控制系统,那么shelving可能会很有用。如果你使用的是git,我看不出任何真正的好处。

答案中列出了shelving的“真正好处”。对我来说,最重要的是能够选择哪些文件/代码块进行shelving,就像提交时一样。自Git 2.13版本以来,可以使用git stash push来进行单独文件的stash。

shelving可以更好地查看内部内容和区别。它更容易只应用一部分已更改的文件。起初我对这个功能不太有信心,但现在我使用它的频率比stash更高。

但是,你可以编辑shelved的变更列表吗?在我看来,它们不能被编辑,而是必须重新创建。

为了修改已经shelved的变更,首先必须先un-shelve它们;这是唯一的方法。

0