git stash的作用
- 将所有未提交的修改(工作区和暂存区)保存至堆栈中,用于后续恢复当前工作状态。
注意:
- stash命令只针对于工作区和暂存区修改的文件,对于Untracked状态的文件是不生效的。
- stash可跨分支操作。
git stash 常用场景
- 当正在dev分支上开发某个项目,这时项目中出现一个bug,需要紧急修复,但是正在开发的内容只是完成一半,还不想提交,这时可以用git stash命令将修改的内容保存至堆栈区,然后顺利切换到hotfix分支进行bug修复,修复完成后,再次切回到dev分支,从堆栈中恢复刚刚保存的内容
- 由于疏忽,本应该在dev分支开发的内容,却在master上进行了开发,需要重新切回到dev分支上进行开发,可以用git stash将内容保存至堆栈中,切回到dev分支后,再次恢复内容即可
stash常见命令
stash@{num}的说明:
- 每次执行git stash时,都会新增一个stash@{num},num代表编号,编号越小代表保存进度的时间越近
- 可以通过git stash list查看具体值
- 此选项是可选的,不带此项则默认是最近的一次工作进度相当于stash@{0}
保存
git stash [save message] save为可选项,message为本次保存的注释
保存包含没有跟踪的文件
git stash save -u
或者
git stash save --include-untracked
查看
git stash list 查看所有保存的记录列表
git stash show [stash@{num}] 显示stash的内容具体是什么
恢复
恢复某条工作进度到工作区,并将此工作进度在保存的列表中移除。可恢复一次
git stash pop [stash@{num}]
恢复某条工作进度到工作区,并不会将此工作进度在保存的列表中移除。可恢复多次
git stash apply [stash@{num}]
删除
删除某条保存的工作进度
git stash drop [stash@{num}]
删除所有保存的工作进度
git stash clear