最近工作里面使用到了git stash的命令,发现真的是相当好用啊。所以详细记录一下。
概念介绍
git分为远程仓库(Remote)和本地仓库(Repository)。然后在本地仓库中,又分为工作区(workspace)和暂存区(Index / Stage)。远程仓库和本地仓库很好理解,工作区指的就是我们看到和直接操作的本地目录。暂存区可以简单从名字理解,暂时保存文件的地方,暂存区和工作区是隔离的。
作用
git stash可以将当前已经修改的文件暂存起来,将文件恢复到修改前的状态。同时可以在适合的时候还可以将进度还原。
命令
常用命令索引
# 把所有修改未提交的文件放入暂存区
git stash
# 把所有修改未提交的文件放入暂存区,并添加注释
git stash save 'message'
# 查看所有缓存区进度列表
git stash list
# 释放暂存区最新一个stash
git stash pop
# 恢复指定进度到工作区,这里的id是通过上面list命令得来的
git stash pop [id]
# 删除进度,不指定ID的话,默认删除最新的进度
git stash drop [id]
# 清空
git stash clear
过程演示
暂存
为了测试,首先修改工作区中的一个文件。然后使用暂存命令。
# 把所有修改未提交的文件放入暂存区,并添加注释。
# 和git stash的区别就是save可以添加注释消息
git stash save "第一次暂存"
ps:这里控制台出现乱码了。忽略。
暂存之后,可以发现已经没有修改过的文件了,也就是说将工作区还原到了最开始的状态。
接着就可以开始做别的功能开发了。为了下面的演示,我这里再暂存一次。
查看列表
# 查看所有缓存区进度列表
git stash list
可以通过list命令看到暂存的进度列表,从上图看到我这里缓存了三个进度。
前面的stash@{1}这些是id,在需要恢复特定进度的时候会很有用。
恢复进度
假设这时我想恢复到第二次暂存的状态。
# 恢复最新的进度
git stash pop
# 如果想恢复的进度不是最新的一条,可以使用list命令里面的id
# 比如想恢复第一次暂存状态,就可以使用id: 1
git stash pop 1
命令执行之后,可以发现在stash列表里面少了一条,同时工作区恢复到了第二次暂存的进度。这时候又可以接着之前的工作继续开发了。
删除进度
假设说某个进度不想保存了。
# 删除最新的一条暂存进度
git stash drop
# 删除指定的暂存进度也是需要搭配id使用
git stash drop [id]
清空进度
# 清空进度
git stash clear