IntelliJ IDEA中的Git存放与搁置

2skhul33  于 2023-02-18  发布在  IntelliJ IDEA
关注(0)|答案(6)|浏览(818)

我对Git的shelve方面非常不熟悉(编辑:不是Git的一个方面,而是shelve的IntelliJ IDEA特性)。
如果stash被用来搁置未完成的工作,那么shelve是什么?你会用它来做什么?
例如,在更新项目上(从VCS菜单)

一个人会得到(在IntelliJ IDEA 2019.2中)

k0pti3hp

k0pti3hp1#

git shelve在Git中不存在。
仅限git stash

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

您有一个2008年的老项目git shelve来隔离分支中的修改,但现在这已经不是很有用了。
Intellij IDEA shelve dialog中所述,“搁置和取消搁置”功能没有链接到VCS(版本控制系统工具),而是链接到IDE本身,用于临时存储尚未提交到更改列表中的挂起更改。
请注意,since Git 2.13 (Q2 2017), you now can stash individual files too .

sh7euo9m

sh7euo9m2#

在使用JetBrains IDE和Git时,除了搁置和取消搁置之外,还支持隐藏和取消隐藏操作。主要的区别在于补丁的生成和应用方式。Shelve可以处理单个文件或一组文件,而Stash只能同时处理一整组更改的文件。下面是它们之间的一些区别。”

tv6aics1

tv6aics13#

除了前面的答案外,还有一点对我来说很重要:
shelve是JetBrains的产品特性(如WebStormPhpStormPyCharm等),它将搁置的文件放到.idea/shelf目录下。
stashgit选项之一。它将隐藏的文件放在.git目录下。

yzuktlbb

yzuktlbb4#

如果不将更改共享到其他位置,我宁愿搁置更改而不是隐藏更改。

Stashing是git的一个特性,它不给予你选择特定的文件或文件中的修改。Shelving可以做到这一点,但这是IDE特有的特性,而不是git功能:

正如你所看到的,我可以选择指定哪些文件/行包含在我的shelve中,注意我不能用stashing来做这件事。
请注意,在IDE中使用shelf可能会限制补丁的可移植性,因为这些更改不会存储在.git文件夹中。
一些有用的链接:

k5hmc34c

k5hmc34c5#

Shelf是JetBrains的一个特性,而Stash是Git的一个特性。你可以切换到不同的分支,而不会提交和丢失工作。我个人的经验是使用Shelf。

pbwdgjma

pbwdgjma6#

Shelve是IntelliJ IDE的一个特性。Stash是Git的一个特性。更新版本的git还允许您使用
git stash -p
IMO,Shelve相对于Plain Stash的一个优势是能够shelve changes from multiple repos together

相关问题