Git 使用技巧:stash 保存现场、恢复现场

git stash 的主要用途,就是保存现场和恢复现场。

  • 功能:将git 工作区中的数据暂存起来,保存现场,以及后续的恢复现场,类似于函数调用的保存现场、恢复现场
  • 使用场景:正在开发一个代码,编写到一半,需要将代码恢复到某个版本修复某个bug上,但已经编写的工作又想保留

基本用法

1
2
3
4
git stash   # 保存当前现场。
git stash list # 查看当前stash缓存的内容
## 编辑其他内容,编辑完毕后,想回复现场:
git stash pop # 弹出stash缓存栈顶内容,即可恢复现场

需要注意的是,stash 保存的数据本质上是一个栈结构,最新压入的数据会放在栈顶,因此执行 git stash pop 时默认弹出的也是最新一次保存的内容。

如果执行过多次 stash,想恢复其中某一次保存的内容,可以先查看 stash 记录:

1
git stash list

可以看到,git stash list的结果基本如下:

1
2
stash@{0}: WIP on dev: f52c633 add merge
stash@{1}: WIP on dev: d23b633 add feature

然后挑选哪次弹出即可:

1
git stash apply stash@{1}

注意git stash apply命令不会将数据弹出、数据仍保存在stash缓存中;git stash pop则会将数据彻底弹出。
如果运用git stash apply之后,想彻底删掉某条记录,可以用:

1
git stash drop stash@{1}

参考资料