git stash命令

使用git的时候,我们往往使用分支(branch)解决任务切换问题,例如:我们往往会建一个自己的分支去修改和调试代码,如果别人或者自己发现原有的分支上有个不得不修改的bug,我们往往会把完成一半的代码commit提交到本地仓库,然后切换分支去修改bug,改好之后再切换回来(因为直接切回原分支,工作区的修改或者暂存区中的修改会被带到原分支中)。

类似这种完成一半或者不完善的代码,最好是不要 提交,因为这样的话往往log上会有大量不必要的记录。这时,可以使用git stash将当前未提交到本地的代码推入到Git的栈中,这时候你的工作区间和上一次提交的内容是完全一样的,然后切到原分支,等到修完Bug,提交到服务器上后,再切回分支使用git stash apply将以前一半的工作应用回来。

1、常见用法:

  • git stash //备份当前工作区、暂存区中的修改到git栈中,并且还原工作区
  • git stash save “XXX” //加一个message
  • git stash list //列出git栈内所有的备份
  • git stash pop //从git栈中取出最近的一个备份,恢复到工作区,并从git中删除该备份
  • git stash pop [email protected]{n} //指定git栈中某个备份,恢复到工作区中,并从git中删除该备份
  • git stash apply //从git栈中取出最近的一个备份,恢复到工作区,不从git中删除该备份
  • git stash apply [email protected]{n} //指定git栈中某个备份,恢复到工作区中,不从git中删除该备份
  • git stash clear //清空git栈

说明:每执行一次git stash都会将当前工作区的修改添加到git栈中(如果没有修改,则不会备份到git栈中),并且清空当前工作区上的修改;每执行一次git stash pop则从栈中弹出一个备份。栈中元素名字依次是[email protected]{n},n从0开始,栈顶元素始终是[email protected]{0}

2、示例:

示例1)

git stash命令

示例2)从暂存区中备份

 git stash命令