当你在dev分支开发新功能,做到一半的时候有人来找你改bug马上解决并上线,但是你新开发的任务又不想提交,这个时候你就可以使用git stash把当前开发进度保存起来,然后切换到另一个分支去修改bug,修改完提交后,再切到dev分支去开发,使用git stash pop来恢复之前的进度继续开发新功能,下面来看下操作命令行
命令行:
1.git stash save "xxx"
保存当前的进度,会把暂存区和工作区的改动保存起来。执行完这个命令之后执行git status,就会发现当前是一个干净的工作区,没有任何改动。我一般都是使用git stash save "xxx"来添加一些注释,如果不想添加注释就执行git stash。
2.git stash list
显示当前保存工作进度的列表。这也可以说明git stash可以执行多次。
3.git checkout 改动的分支名
用于修改工作区,这个命令比较危险,因为会修改的工作区且无法撤销。
4.git stash pop [-index] [stash_id]
在另一个分支改完之后,切换到正在开发的工作区,执行当前命令,git会把工作区和暂存区都恢复到工作区。
-
git stash pop
恢复最新的进度到工作区。git会把工作区和暂存区都恢复到工作区。 -
git stash pop --index
恢复最新的进度到工作区和暂存区。 -
git stash pop stash@{1}
恢复指定的进度到工作区。stash_id是通过git stash list命令得到的
通过git stash pop命令恢复进度后,会删除当前进度
git stash apply [-index] [stash_id]
除了不删除恢复的进度之外,其余和git stash pop命令一样
git stash drop [stash_id]
删除一个存储的进度,如果不指定stash_id,默认删除最新的
git stash clear
删除所有暂存的进度
注意:
当我们拉去远程代码又不想提交当前开发的代码,可以使用git stash命令将当前工作区保存起来,等到pull之后再还原(如果还原工作区的代码和拉去的代码有冲突需要手动解决冲突)
命令行:
git stash //暂存修改工作区
git pull //拉去远端代码
git stash pop stash@{0} //将工作区还原
注意:此操作为高危操作,如果没有恢复暂存,删除了暂存的stash,修改的内容就无法恢复了!