Git IntelliJ IDEA 中的 Stash 与 Shelve
Git Stash vs Shelve in IntelliJ IDEA
我对Git的shelve
方面很不熟悉。如果stash
是用来搁置未完成的工作那么shelve
是什么?你会用它做什么?
例如更新项目(从 VCS 菜单)
一个人会得到(在 IntelliJ IDEA 2019.2 中)
git shelve
在 Git 中不存在。
- 当您想记录工作目录和索引的当前状态,但又想回到干净的工作目录时。
- 这会保存您的本地修改并还原工作目录以匹配 HEAD 提交。
你有一个 2008 年的旧项目 git shelve 来隔离分支中的修改,但现在这不是很有用。
如 Intellij IDEA shelve dialog, the feature "shelving and unshelving 中所述“未链接到 VCS(版本控制系统工具),而是链接到 IDE 本身,以临时存储您尚未在更改列表中提交的未决更改。
注意 since Git 2.13 (Q2 2017), you now can stash individual files too.
将 JetBrains IDE 与 Git、"stashing and unstashing actions are supported in addition to shelving and unshelving. These features have much in common; the major difference is in the way patches are generated and applied. Shelve can operate with either individual files or bunch of files, while Stash can only operate with a whole bunch of changed files at once. Here are some more details on the differences between them."
一起使用时
除了之前的答案之外,还有一个对我来说很重要的注意事项:
shelve
是 JetBrains 产品功能(例如 WebStorm
、PhpStorm
、PyCharm
等)。它将搁置的文件放入 .idea/shelf
目录。
stash
是 git
选项之一。它将隐藏的文件放在 .git
目录下。
如果我不在其他地方分享我的更改,我宁愿搁置更改而不是隐藏它们。
存储是一项 git 功能,不会让您选择 select 特定文件或文件内的更改。搁置可以做到这一点,但这是 IDE 特定的功能,而不是 git 功能:
如您所见,我可以选择指定将哪个 files/lines 包括在我的书架上。请注意,我不能通过隐藏来做到这一点。
注意使用 IDE 中的工具架可能会限制补丁的可移植性,因为这些更改未存储在 .git 文件夹中。
一些有用的链接:
Shelf 是 JetBrains 的一项功能,而 Stash 是针对相同工作的 Git 功能。您可以使用任一功能切换到不同的分支,而不会提交和丢失工作。我个人的经验是使用Shelf。
我对Git的shelve
方面很不熟悉。如果stash
是用来搁置未完成的工作那么shelve
是什么?你会用它做什么?
例如更新项目(从 VCS 菜单)
一个人会得到(在 IntelliJ IDEA 2019.2 中)
git shelve
在 Git 中不存在。
- 当您想记录工作目录和索引的当前状态,但又想回到干净的工作目录时。
- 这会保存您的本地修改并还原工作目录以匹配 HEAD 提交。
你有一个 2008 年的旧项目 git shelve 来隔离分支中的修改,但现在这不是很有用。
如 Intellij IDEA shelve dialog, the feature "shelving and unshelving 中所述“未链接到 VCS(版本控制系统工具),而是链接到 IDE 本身,以临时存储您尚未在更改列表中提交的未决更改。
注意 since Git 2.13 (Q2 2017), you now can stash individual files too.
将 JetBrains IDE 与 Git、"stashing and unstashing actions are supported in addition to shelving and unshelving. These features have much in common; the major difference is in the way patches are generated and applied. Shelve can operate with either individual files or bunch of files, while Stash can only operate with a whole bunch of changed files at once. Here are some more details on the differences between them."
一起使用时除了之前的答案之外,还有一个对我来说很重要的注意事项:
shelve
是 JetBrains 产品功能(例如 WebStorm
、PhpStorm
、PyCharm
等)。它将搁置的文件放入 .idea/shelf
目录。
stash
是 git
选项之一。它将隐藏的文件放在 .git
目录下。
如果我不在其他地方分享我的更改,我宁愿搁置更改而不是隐藏它们。
存储是一项 git 功能,不会让您选择 select 特定文件或文件内的更改。搁置可以做到这一点,但这是 IDE 特定的功能,而不是 git 功能:
如您所见,我可以选择指定将哪个 files/lines 包括在我的书架上。请注意,我不能通过隐藏来做到这一点。
注意使用 IDE 中的工具架可能会限制补丁的可移植性,因为这些更改未存储在 .git 文件夹中。
一些有用的链接:
Shelf 是 JetBrains 的一项功能,而 Stash 是针对相同工作的 Git 功能。您可以使用任一功能切换到不同的分支,而不会提交和丢失工作。我个人的经验是使用Shelf。