git stash命令用法详解(临时存储代码)

1、需求背景

        有时候在开发过程中,在一个分支上(dev1)已经写了一部分代码,但是需要紧急切换到别的分支(dev2)上修改某个代码,这时候不能直接从dev1分支上切换到dev2分支上,提示你需要保存代码。此时dev1分支上的代码还没有写完,暂时还不能提交。但是想在不提交代码的情况下能够临时保存dev1分支上的代码,然后切换到dev2分支上。等dev2分支上处理完成后,再切换到dev1分支上可以继续工作。

2、git stash介绍

        git stash会把所有未提交的修改(包括暂存的和非暂存的)都保存起来,用于后续恢复当前工作目录。通过git stash命令推送一个新的储藏,当前的工作目录就干净了。

        stash是本地的,不会通过git push命令上传到git server上。

3、git stash常用命令

  • git stash save "save message"  : 执行存储时,添加备注,方便查找,只有git stash 也要可以的,但查找时不方便识别。
  • git stash list  :查看stash了哪些存储
  • git stash show :显示做了哪些改动,默认show第一个存储,如果要显示其他存贮,后面加stash@{$num},比如第二个 git stash show stash@{1}
  • git stash show -p : 显示第一个存储的改动,如果想显示其他存存储,命令:git stash show  stash@{$num}  -p ,比如第二个:git stash show  stash@{1}  -p
  • git stash apply : 应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0},如果要使用其他个,git stash apply stash@{$num} , 比如第二个:git stash apply stash@{1} 
  • git stash pop :命令恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash,即stash@{0},如果要应用并删除其他stash,命令:git stash pop stash@{$num} ,比如应用并删除第二个:git stash pop stash@{1}
  • git stash drop stash@{$num} :丢弃stash@{$num}存储,从列表中删除这个存储
  • git stash clear :删除所有缓存的stash

        使用 git stash apply 将之前隐藏的更改重新应用到工作副本,但是和 git stash pop 不同, 并不会将他们从stash中删除。 

4、演示操作

当在dev_index分支上修改了一些代码,这时候需要切换到dev_app分支上:

此时可以使用git stash命令保存代码:

git stash save 'dev_index_001'

git stash命令用法详解(临时存储代码)_第1张图片

此时可以顺利的切换到dev_app分支:

git stash命令用法详解(临时存储代码)_第2张图片

 待在dev_app分支处理完后,再次切换到dev_index分支:

git stash命令用法详解(临时存储代码)_第3张图片

此时再次使用git stash命令释放之前保存的代码:

git stash pop

git stash命令用法详解(临时存储代码)_第4张图片

注意:git stash在各个分支之间是通用的,不同分支缓存的代码可以保存到另外的分支上。

注意:git stash pop默认会恢复上一个,即第一个stash@{0}缓存的内容。建议使用git stash pop之前先使用一下git stash list查看一下,然后使用git stash pop stash@{x}。

参考博文:

Git stash 暂存区详解——迹忆客

git-stash用法小结 - Tocy - 博客园 

你可能感兴趣的:(Git,git,stash)