Git 每个分支机构都有单独的储藏室吗?

Git 每个分支机构都有单独的储藏室吗?,git,git-stash,Git,Git Stash,如果我在一个分支机构,例如测试,并且有一些工作。如果我执行git stash并切换到master分支,如果执行git stash clear操作,我是否会丢失在测试中保存的工作?或者每个分支都有一个单独的隐藏堆栈吗?否。隐藏实际上是引用的反射(有点像“隐藏分支”,如果您愿意):refs/stash e41a1b8 refs/stash@{0}: WIP on master: 42092ec PoC 所以 git reflog refs/stash e41a1b8 refs/stash@{0}

如果我在一个分支机构,例如
测试
,并且有一些工作。如果我执行
git stash
并切换到
master
分支,如果执行
git stash clear
操作,我是否会丢失在
测试中保存的工作?或者每个分支都有一个单独的隐藏堆栈吗?

否。隐藏实际上是引用的反射(有点像“隐藏分支”,如果您愿意):
refs/stash

e41a1b8 refs/stash@{0}: WIP on master: 42092ec PoC
所以

  • git reflog refs/stash

    e41a1b8 refs/stash@{0}: WIP on master: 42092ec PoC
    
    大致相当于

    git存储列表

    stash@{0}: WIP on master: 42092ec PoC
    
因此,只有一个“分支”包含所有存储

  • 在这个答案中,机制可能会变得更加清晰:

  • 你可以通过这样做来“推断”藏在哪个分支上,例如

    git branch -a --contains stash@{0}^
    
    (询问:哪些分支包含此存储的父修订?)


正如你建议的,中间的“分支”的引号,<代码> REFS/Stase本身并不是一个分支。(它是一个引用,就像分支和标记是引用一样;但注释也是如此。)
git stash branch…
将允许您将任何给定的隐藏更改为分支(通过签出父级,然后创建新分支并应用隐藏)。所以,如果你有一个藏品,并决定它应该成为一个分支,这很容易做到。@torek谢谢你的添加。你会相信我总是忽略了git隐藏分支吗?或者我对git的使用早于子命令(?)。无论如何,我很高兴知道这一点。