多分支下使用git stash,暂存内容是否按分支隔离存储与恢复?
Git Stash 的存储与恢复规则
执行git stash pop既不会同时恢复两个分支的所有已暂存工作,也不会按分支自动匹配对应暂存内容单独恢复,核心逻辑如下:
- Git Stash 使用仓库全局的后进先出栈结构存储暂存进度,所有执行
git stash保存的工作内容,都会按入栈顺序统一排入这个公共队列,和当前所在分支没有绑定关系,不会为不同分支单独划分独立的暂存存储空间。 - 你当前操作场景下,stash栈内的条目顺序是固定的:
- 最先在feature/A分支保存的修改,会排在栈的下层(对应序号
stash@{1}) - 后续在feature/B分支保存的修改,会排在栈的最顶端(对应序号
stash@{0})
- 最先在feature/A分支保存的修改,会排在栈的下层(对应序号
git stash pop的默认行为始终是取出栈顶的最新一条暂存内容,和你当前所处的分支无关:哪怕你切回了feature/A分支再执行默认的git stash pop,弹出的仍然是存在栈顶的feature/B分支的暂存修改,不会自动识别当前分支、匹配对应分支的暂存内容做恢复。
想精准恢复对应分支的暂存内容,可以先执行
git stash list查看所有暂存条目关联的原始分支、保存备注,找到目标内容对应的序号后,通过git stash pop stash@{N}的方式定向弹出对应条目,避免恢复错进度。
内容的提问来源于stack exchange,提问作者Harry
相关产品推荐
相关产品推荐

