如果我在一个分支中,例如
test
,有一些工作。 如果我执行git stash
并切换到master
分支,如果我执行git stash clear
,我会失去在test
中保存的工作吗?还是每个分支都有一个单独的存储区?不,实际上“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 stash推到远程仓库?
您可以通过执行以下操作“推断”存储适合的分支,例如:
git branch -a --contains stash@{0}^
(询问:哪些分支包含了此存储的父版本?)
refs/stash
并不是真正的分支。 (它确实是一个引用,就像分支和标签一样是引用;但笔记也是引用。)git stash branch ...
将允许您将任何给定的存储库更改为分支(通过检出父级,然后创建新分支并应用存储库)。因此,如果您有一个存储库并决定它应该成为一个分支,那么这很容易做到。 - torekgit stash branch
:) 或者我的 git 使用早于那个子命令的出现?无论如何,很高兴学到了这个知识。 - sehe