stash
git stash会把所有未提交的修改(包括暂存的和非暂存的)都保存起来,用于后续恢复当前工作目录
stash是本地的,不会通过git push命令上传到git server上
stash
bash
# stash 工作区与暂存区
git stash
# 同上,但添加一个message,方便辨认
git stash save "stash info"stash 的文件
默认情况下,git stash会缓存下列文件:
- 添加到暂存区的修改(staged changes)
- Git跟踪的但并未添加到暂存区的修改(unstaged changes)
但不会缓存以下文件:
- 在工作目录中新的文件(untracked files)
- 被忽略的文件(ignored files)
git stash命令提供了参数用于缓存上面两种类型的文件
- 使用-u或者--include-untracked可以stash untracked文件。
- 使用-a或者--all命令可以stash当前目录下的所有修改。
pop
命令恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,默认为第一个stash,即stash@
bash
# pop stash file,只恢复工作区
git stash pop
# 会同时恢复工作区与暂存区
git stash pop --indexapply
与pop相同,但不会删除stash记录, 默认使用第一个存储,即stash@
bash
# pop stash file,只恢复工作区
git stash apply
# 会同时恢复工作区与暂存区
git stash apply --index查看 stash
bash
# 列出所有stash
git stash list
# 显示堆栈顶部stash的改动
git stash show
# 显示堆栈顶部stash的改动细节
git stash show -p丢弃stash
bash
#丢弃堆栈最顶层的stash
git stash drop
#删除所有stash
git stash clear从stash创建分支
git stash branch在你stash时的所处的提交创建一个新的分支,拿出stash的所有改动(工作区与暂存区 ),应用到此分支,如果成功,将会丢弃储藏
bash
git stash branch newbranch多个stash
默认都是操作堆栈顶部stash,即 stash@{0}
也可以自己指定
bash
# 以下操作第二个stash,使用 git stash list 查看所有
git stash pop stash@{1}
git stash apply stash@{1}
git stash drop stash@{1}
git stash show stash@{1}
git stash show stash@{1} -p