看见别人在用 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 ]
网友评论