愿你坚持不懈,努力进步,进阶成自己理想的人

—— 2017.09, 写给3年后的自己

git stash命令的使用

在工作中,我们经常遇到以下的场景:

在B分支上正在进行开发,但是此时QA突然告诉你A分支出了个问题。这时候,我们需要切到A分支上来修复这个问题,但是手头的代码还是在开发中的,我们并不想直接commit一份当前的代码,这种情况下怎么办呢?那么git stash就派上用场了

git stash

这个命令的作用是暂存我们工作区的内容,如上述场景,我们可以在B分支中执行以下操作:

git stash

这时候,我们就可以放心地切到A分支了:

git checkout A

当我们修复了A分支中的BUG,我们就可以切换回B分支:

git checkout B

然后将暂存区的内容取出来,便可恢复到切A分支前的状态


取出暂存区内容

暂存区是用一个栈来保存我们暂存的内容的,我们可以使用

git stash list

来查看暂存区的栈中有什么内容,示例如:

stash@{0}: WIP on xxx
stash@{1}: WIP on xxx
stash@{2}: WIP on xxx

要去除栈中的内容,有两种方法:git stash popgit stash apply,它们的区别如:
1)git stash pop,类似于出栈操作。把栈顶内容应用于当前工作区,并去除掉暂存的该记录
2)git stash apply,可以接一个暂存记录号(可以不一定是栈顶),如:git stash apply stash@{0},就可以将对应记录的内容应用于工作区,同时 不清除记录
此外,还有个命令git stash clear,可以用来清除所有记录