385

shelve对Git的方面非常陌生。如果stash是用来搁置未完成的工作,那又是什么shelve呢?你会用它做什么?

例如更新项目(来自 VCS 菜单)

在此处输入图像描述

一会得到(在 IntelliJ IDEA 2019.2 中)

在此处输入图像描述

4

5 回答 5

356

git shelveGit 中不存在。

只有git stash

  • 当您想记录工作目录和索引的当前状态,但又想回到干净的工作目录时。
  • 这会保存您的本地修改并恢复工作目录以匹配 HEAD 提交。

您有一个 2008 年的旧项目git shelve来隔离分支中的修改,但现在这不是很有用。

Intellij IDEA shelve dialog中所述,“搁置和取消搁置”功能未链接到 VCS(版本控制系统工具),而是链接到 IDE 本身,用于临时存储您尚未在更改列表中提交的挂起更改。

请注意,从 Git 2.13(2017 年第二季度)开始,您现在也可以存储单个文件

于 2015-01-18T10:46:34.043 回答
216

将 JetBrains IDE 与 Git 一起使用时,“除了搁置和取消搁置之外,还支持“存储和取消存储操作。这些功能有很多共同点;主要区别在于生成和应用补丁的方式。搁置可以对单个文件或一堆文件进行操作 _ _

于 2015-04-04T22:34:44.507 回答
91

除了以前的答案外,还有一个对我来说很重要的注意事项:

shelve是 JetBrains 产品功能(如WebStormPhpStormPyCharm等)。它将搁置的文件放入.idea/shelf目录中。

stashgit选项之一。它将隐藏的文件放在.git目录下。

于 2017-08-01T10:14:14.813 回答
21

如果我不在其他地方分享我的更改,我宁愿搁置更改而不是隐藏它们。

Stashing 是一个 git 功能,它不会让您选择特定文件或文件内的更改。搁置可以做到这一点,但这是特定于 IDE 的功能,而不是 git 功能:

在此处输入图像描述

如您所见,我可以选择指定要在我的搁置中包含哪些文件/行。请注意,我不能通过存储来做到这一点。

请注意,在 IDE 中使用搁架可能会限制补丁的可移植性,因为这些更改未存储在 .git 文件夹中。

一些有用的链接:

于 2020-03-30T01:42:46.093 回答
3

Shelf 是 JetBrains 的一项功能,而 Stash 是用于相同工作的 Git 功能。您可以使用任一功能切换到不同的分支,而无需提交和丢失工作。我个人的经验是使用Shelf。

于 2020-08-03T10:12:25.943 回答