git stash
- 将添加到暂存区的修改(staged changes) 和 git追踪单但未添加到暂存区的修改(unchangeed changes) 缓存起来, 用于后续恢复当前的工作状态.
- 记录被缓存寄来后, 当前工作区会被清空. 也就意味着, 如果缓存栈中的记录被直接删除的话, 就“无法恢复”了.
git stash save message
- 给每一次stash加一个message, 用于记录每次的工作版本, 用来替代直接使用
git stash
- 给每一次stash加一个message, 用于记录每次的工作版本, 用来替代直接使用
git stash list
- 列出缓存区中保存的记录
git stash pop
- 恢复上一次缓存的工作状态
- 该命令会把缓存栈(后进先出)中的第一条记录(stash@{0})删除, 并将对应的修改应用到当前的工作目录
git stash apply
- 功能与
git stash pop
同, 但是git stash apply
不会删除缓存栈中的记录, 因此可以用于多次重复应用 - 默认情况下恢复的是上一次缓存的记录, 即缓存堆栈中第一条记录(stash@{0}), 可以通过指定名字, 恢复指定记录
git stash apply stash@{n}
- 功能与
git stash drop stash@{n}
- 移除缓存栈中指定记录
- 不加名字时默认是最新的一条记录, 也就是stash@{0}
git stash clear
- 清楚缓存堆栈中所有记录
git stash show stash@{n}
- 查看指定记录中的diff
- 如果没有指定, 默认是最新的一条记录
- 最后添加
-p
, 查看具体的全部diff
git stash branch branch_name
- 当你的缓存区记录和当前的版本有冲突时, 直接使用
git stash apply
会出现合并需要解决. 使用git stash branch branch_name
可以直接创建一个新分支, 该分支会恢复当时缓存该记录时的工作状态
- 当你的缓存区记录和当前的版本有冲突时, 直接使用
git stash -u
- 可以缓存未被git追踪的文件(untracked)
-git stash -a
- 缓存所有更改, 包括被忽略的文件(.gitignore)
- 可以缓存未被git追踪的文件(untracked)
学习