每个分支都有单独的储藏库吗?

8
如果我在一个分支中,例如test,有一些工作。 如果我执行git stash并切换到master分支,如果我执行git stash clear,我会失去在test中保存的工作吗?还是每个分支都有一个单独的存储区?
1个回答

11

不,实际上“Stashes”是一个“引用”的reflog(类似于一个“隐藏分支”,如果你愿意的话):refs/stash

因此,

  • git reflog refs/stash

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

大致相当于

git stash list

stash@{0}: WIP on master: 42092ec PoC

因此只有一个包含所有存储的“分支”。

git branch -a --contains stash@{0}^

(询问:哪些分支包含了此存储的父版本?)


1
正如您在中间加上“分支”引号所建议的那样,refs/stash并不是真正的分支。 (它确实是一个引用,就像分支和标签一样是引用;但笔记也是引用。)git stash branch ...将允许您将任何给定的存储库更改为分支(通过检出父级,然后创建新分支并应用存储库)。因此,如果您有一个存储库并决定它应该成为一个分支,那么这很容易做到。 - torek
@torek 谢谢你的补充。你相信我竟然总是忽略了 git stash branch :) 或者我的 git 使用早于那个子命令的出现?无论如何,很高兴学到了这个知识。 - sehe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接