stash 一个 git 的新的堆栈区(不同于暂存区),当一个需要开发到一半没办法继续开发下去,此时要开发另外一个需求时,但你又不想用git commit将改动提交到版本库,git stash就发挥了作用。
stash类似于一个栈的结构。
当你用stash存起来之后,可以随意切换分支,并且可以将存在stash中的改动,恢复到任意一个分支上。
说明: 实际开发过程中,经常会遇到同时开发多个需求的情况。可以用 git stash 堆栈来解决这个问题。当然,如果你对 git stash 掌握不好,也可以创建多个分支来解决。
常用命令:
存储到堆栈
// -u 表示包括untracked files 默认情况下是只保存暂存区的修改 和 工作区已经存在文件的修改
// 使用该命令 会使 git status 变为nothing to commit,working tree clean
// git diff 和 git diff --cached 分别用来查看工作区和暂存区的修改
git stash -u save "备注信息"
将堆栈中的stash应用到工作区
//将堆栈中的指定stash应用到工作区(同时保留堆栈的内容)栈顶 id 为 0
git stash apply stash@{id}
//将最近一次(栈顶)stash 应用到工作区
git stash apply
//将栈顶的stash应用到工作区,同时删除栈内此条stash
git stash pop
查看stash中的内容
//堆栈中可能会有多个stash 通过stash_id来区分 栈顶为0
git stash list
git stash show
git stash show stash@{id}
git stash show -p
删除堆栈中的stash
//删除所有的stash
git stash clear
//删除最近一个stash
git stash drop
//删除指定stash
git stash drop stash@{id}