git stash命令详解

本文介绍了gitstash在处理工作区和暂存区内容、切换分支时的注意事项,以及如何使用gitstashlist、gitstashpop和gitstashapply等命令来管理全局修改记录,确保正确恢复分支状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

git stash

工作区和暂存区的内容是公共的,不属于任何一个分支

所以在切换分支的时候务必保证工作区是干净的,否则切换过去的时候会导致那个分支也被修改了

如果不想add和commit,那可以用git stash将工作现场暂存一下

需要注意的是:

git stash所存储的修改记录是全局的,不是指定某个分支下的缓存。通俗的讲,git stash是git工具维护的一个全局的栈,会按照调用git stash的顺序,将各个分支下git stash的修改保存起来并压入同一个全局(全分支共享)的

也就是说,每次想要调用方法git stash pop弹出的总是栈顶的那条记录,如果栈顶记录不是当前分支,之前所git stash时的分支,此时弹出的内容会不符当前分支的版本,会产生错误或冲突

命令:

git stash 隐藏当前工作现场,可以相同/不同分支多次stash

git stash list 查看隐藏起来的工作现场

git stash drop 删除工作现场

git stash apply恢复公共现场,恢复后stash的内容不会删除,需要用drop来删除,不是简单的栈结构,可以算是链栈,支持索引弹出制定记录

leel@dirname (branch_1)     <-----------当前所处分支
$ git stash list
stash@{0}: WIP on branch_2: 9b9354d Merge branch 'add_global_rr' into 'branch_2'
stash@{1}: WIP on branch_1: f68749d bugfix
stash@{2}: WIP on branch_2: 23fe861 bug fix 4 
stash@{3}: WIP on branch_3: c06b8da bug fix
stash@{4}: WIP on branch_4: 9ed1dd6 move reload method to parent class
stash@{5}: WIP on branch_5: c833e3f Merge branch 'fix_add_version' into 'branch_2'

$ git stash pop stash@{1}

git stash pop 恢复栈顶的公共现场,恢复后会删除对应工作现场,用list无法看见

调用stash pop 或者 stash apply的时候要注意先用list查看一下当前栈的状态,根据所在分支进行调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值