看见别人在用 stash,而自己之前没有用过,于是查探一番后,终有此文
一、作用
- 把所有未提交的修改(包括暂存的和非暂存的)都保存起来,用于后续恢复当前工作目录,而不再 git log 中产生记录;
- 注意,
stash操作是本地的,不会通过git push命令传输到另一台 Git 上; 
 - 注意,
 
二、原理
- Git 内部维护一个缓存栈,每次缓存的是换货就会入栈,需要恢复的时候直接弹出或者 peak 即可;
 
二、用法
- 保存,建议添加消息
git stash[ save "<your-message>"]- 默认情况下,git stash会缓存下列文件:
- 添加到暂存区的修改(staged changes)
 - Git跟踪的但并未添加到暂存区的修改(unstaged changes)
 
 - 但不会缓存一下文件:
- 在工作目录中新的文件(untracked files)
 - 被忽略的文件(ignored files)
 
 - 
git stash命令提供了参数用于缓存上面两种类型的文件。使用-u或者--include-untracked可以stash untracked文件。使用-a或者--all命令可以stash当前目录下的所有修改。 
 - 默认情况下,git stash会缓存下列文件:
 - 应用缓存
- 应用并删除最近缓存的文件信息
git stash pop - 获取栈顶缓存的文件信息:这种方式缓存不会出栈,只会获取栈顶缓存
git stash apply 
 - 应用并删除最近缓存的文件信息
 - 查看存储列表(存储栈中的所有元素)
git stash list - 删除某个存储元素
git stash drop <stash-name>- <stash-name>指的是在 list 中每条记录中,冒号前面的部分;
 
 - 查看指定stash的diff
git stash show[ -p | --patch ]