Git Shelve vs Stash

时间:2015-01-18 07:47:48

标签: git intellij-idea

我对Git的shelve方面非常不熟悉。如果使用stash将未完成的作品放在一边shelve那么?你会用它做什么?

5 个答案:

答案 0 :(得分:178)

Git中不存在

git shelve

git stash

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

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

Intellij IDEA shelve dialog中所述,功能“shelving and unshelving”未链接到VCS(版本控制系统工具),而是链接到IDE本身,以临时存储尚未提交的待处理更改变更表。

请注意since Git 2.13 (Q2 2017), you now can stash individual files too

答案 1 :(得分:167)

当使用JetBrains IDE和Git时,除了搁置和取消搁置外,还支持存储和取消存储操作。这些功能有很多共同之处;主要区别在于补丁生成和应用的方式。搁架可以与任何一个人一起操作文件或一堆文件,而Stash只能同时使用一大堆已更改的文件。以下是more details之间的差异。“

答案 2 :(得分:45)

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

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

stashgit个选项之一。它将存储的文件放在.git目录下。

答案 3 :(得分:10)

如果我不想在其他地方共享更改,我宁愿搁置更改而不是存储更改。

隐藏是git的一项功能,它不能为您提供选择特定文件或文件内部更改的选项。搁架可以做到这一点,但这是特定于IDE的功能,而不是git功能:

enter image description here

如您所见,我能够选择指定要包含在我的货架上的文件/行。请注意,我无法通过隐藏来做到这一点。

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

一些有用的链接:

答案 4 :(得分:0)

架子是JetBrains的功能,而藏匿是Git的功能,可以完成相同的工作。您可以使用任何一个功能切换到不同的分支,而无需提交和工作。我的个人经验是使用架子。