IntelliJ IDEA/NetBeans中的Git Stash与Shelve

vcudknz3  于 2023-08-01  发布在  Git
关注(0)|答案(6)|浏览(180)

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


的数据
一个将得到(在IntelliJ IDEA 2019.2中)


vfhzx4xs

vfhzx4xs1#

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

1zmg4dgp

1zmg4dgp2#

当使用JetBrains IDE和Git时,“除了shelving和unshelving之外,还支持stashing和unstashing操作。这些特征有许多共同之处;主要区别在于生成和应用补丁的方式。Shelve可以操作单个文件或一堆文件,而Stash只能一次操作一整堆更改的文件。这里有一些more details关于它们之间的差异。

esbemjvw

esbemjvw3#

除了前面的回答,还有一个重要的问题:
shelve是JetBrains产品的功能(如WebStormPhpStormPyCharm等)。它将搁置的文件放入.idea/shelf目录。
stashgit选项之一。它将隐藏的文件放在.git目录下。

sd2nnvve

sd2nnvve4#

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

Stashing是git的一个特性,它不给予你选择特定的文件或文件中的更改。Shelving可以做到这一点,但这是IDE特有的功能,而不是git功能:
x1c 0d1x的数据
正如您所看到的,我可以选择指定哪些文件/行包含在我的shelve中。请注意,我不能这样做与stashing。
请注意,在IDE中使用工具架可能会限制修补程序的可移植性,因为这些更改不会存储在.git文件夹中。
一些有用的链接:

bfnvny8b

bfnvny8b5#

Shelf是JetBrains的一个功能,而Stash是Git的一个功能。您可以切换到不同的分支没有提交和损失的工作使用任何功能。我个人的经验是使用Shelf。

jum4pzuy

jum4pzuy6#

Shelve是IntelliJ IDE的一个特性。Stash是Git的一个特性。新版本的git还允许您使用
git stash -p
在我看来,Shelve相对于普通stash的一个优势是shelve changes from multiple repos together的能力

相关问题