当在一个分支上正在工作,突然被打断需要紧急修复一个线上的问题,bug可能在当前分支,也或许在另一个分支,但是手上的代码还没有到能够提交的地步,又不能回滚,所以需要与即将修复的所产生的代码进行一个隔离。就可以使用git stash命令啦。
1、git stash
表示将当前分支上的未提交的代码保存起来,也就是目录中蓝色未提交的文件将会变成修改之前的黑色。此时可以进行切换分支或者拉取当前分支最新的代码。这个暂存区是可以作用于所有分支的,是一块单独的区域,后续可以将暂存的内容恢复到任意分支。
2、git stash save “这一stash的标签”
例:git stash save "test3"
表示将当前分支上的未提交的代码保存起来,同时会比第一个命令多一个标签。两种的对比如下:
image.png
蓝色的是git stash,没有加标签的
黄色的 是git stash save "标签" 加了标签的
3、git stash list
表示查看所有stash,以一个列表展示,顺序是后来居上的。可以参考上方那张图
4、git stash pop
我们既然做了一个内容的暂存,那怎么使用的?比如线上bug解决完了,回来继续开发,需要把搁置的代码恢复出来,就可以在任何分支上使用这个命令,将会把最后添加到stash list的一个stash拿出来,恢复到当前分支上,并且会删除这一条记录。换言之,使用了pop只能把一个stash恢复到一个分支上,作用于多个分支就不太可能了。后面会说git stash apply可以弥补这个需求。
5、git stash apply
区别于 git stash pop的是恢复暂存区的代码之后,不会删除记录,仍然可以多次进行对于一条记录的恢复。
6、git stash apply "stash的id" 例: git stash apply "stash@{2}"
恢复指定的stash,默认是恢复最近一条
7、git stash branch "branch name"
从最近的一条stash进行创建一个新分支
8、git stash clear
清除stash列表里面的所有记录
9、git stash show
显示最近一条stash和当前工程的差异对比
10、git stash drop + stash 名称 例:git stash drop stash@{2}
清除指定的一条stash
网友评论