1.使用场景
- 发现有一个类是多余的,想删掉它又担心以后需要查看它的代码,想保存它但又不想增加一个脏的提交
- 正在dev分支开发新功能,做到一半时有人过来反馈一个bug,让马上解决,但是新功能做到了一半你又不想提交
- 解决冲突文件时,会先执行git stash,然后解决冲突
- 切换分支时,当前工作空间内容不能提交时,会先执行git stash再进行分支切换
2.命令
git stash -h
查看git stash帮助
git stash
git stash会把所有未提交的修改(包括暂存的和非暂存的)都保存起来,用于后续恢复当前工作目录
实际应用中推荐给每个stash加一个message,用于记录版本,使用git stash save取代git stash命令
git stash save 'message...'
git stash list
查看stash队列
git stash pop
这个指令将缓存堆栈中的第一个stash删除,并将对应修改应用到当前的工作目录下
如果在一个分支上想要恢复某一个工作现场怎么办:先用git stash list查看stash队列。确定要 恢复哪个工作现场 到当前分支。然后用git stash pop stash@{num}
git stash list
git stash pop默认将最近一次stash操作合并到本地代码中
git stash pop stash@{num} ----> num就是你要恢复的工作现场的编号
git stash apply
将缓存堆栈中的stash多次应用到工作目录中,但并不删除stash拷贝
git stash list
git stash apply stash@{num}
git stash drop[stash_id]
删除一个stash。如果不指定stash_id,则默认删除最新的stash
git stash clear
删除所有的stash
git stash show
显示stash合并到本地代码后,哪些文件会修改,以及修改的概述
显示修改的详细内容
git stash show -p stash@{num}
3.暂存未跟踪或忽略的文件
默认情况下,git stash会缓存下列文件:
- 添加到暂存区的修改(staged changes)
- Git跟踪的但并未添加到暂存区的修改(unstaged changes)
但是不会缓存以下文件:
- 在工作目录中新的文件(untracked files)
- 被忽略的文件(ignored files)
git stash命令提供了参数用于缓存上面两种类型的文件。
- 使用-u或者--include-untracked可以stash untracked文件
- 使用-a或者--all命令可以stash当前目录下的所有修改