提示:我们经常修改程序出现问题,想要回去以前版本查看,而又不想丢失工作区和暂存区的代码,而此时代码也没修改完也不想提交,就要用到stash
目录
前言
使用
git stash
可以将没有提交的内容(包括工作区和暂存区)保存至堆栈中。
注意: 如果工作区新建了个文件,此文件从来没有被添加到暂存区,那么这个文件就不能被git管理,也就不能被保存到堆栈
1、将未提交的修改保存至堆栈
将所有未提交的修改(工作区和暂存区)保存至堆栈中,用于后续恢复当前工作目录。
其中所有未提交的修改不包括
工作区新建的文件
可以使用
git stash
或者
git stash save "注释"
然后我将t1文件乱加一些字符
t1文件被改动,改动后也没有提交,也就是改动后的t1在工作区。
1.1 git stash
- 使用
git stash
将未提交的文件(也就是t1)保存到堆栈: - git stash save 作用等同于git stash,区别是可以加一些注释
特别说明:
当使用
git stash
将工作区内容提交到堆栈临时存储后,工作区的内容会立刻变为上一次提交的内容。
此时如果使用
git stash pop
将堆栈内容弹出,工作区内容立马恢复。
1.2 git stash list
- 使用
git stash list
列出所有保存的临时提交(stash) 您当前只有一个保存的临时提交,它的标识为 stash@{0}。 该临时提交的消息是 “WIP on master: 6b63346 第三次提交”,表示该临时提交是在 master 分支上进行的工作,并且是提交对 6b63346(提交的哈希值)的更改。
1.3 git stash show
- 使用
git stash show
查看堆栈中最新保存的stash 更改信息t1 | 1 +
有一个文件发生了更改。文件名为 t1,文件中插入了一行内容1 file changed, 1 insertion(+)
输出还显示了更改的摘要信息: 1 file changed:一个文件发生了更改。 1 insertion(+):插入了一行内容。
2、切换到第一次提交
我们可以看到t1内容变为以前的内容了。
此时我们再查看堆栈里面的内容依然存在:
3、切换回master分支
4、将当前stash中的内容弹出,并应用到当前分支对应的工作目录上
4.1 git stash pop
将当前stash中的内容弹出,并应用到当前分支对应的工作目录上。
注:该命令将堆栈中最近保存的内容删除(栈是先进后出)
已经恢复了之前工作区的内容了
此时堆栈区也没有内容了
4.2 git stash apply
将堆栈中的内容应用到当前目录,不同于git stash pop,该命令不会将内容从堆栈中删除,也就说该命令能够将堆栈的内容多次应用到工作目录中,适应于多个分支的情况。
5、删除堆栈
5.1 从堆栈中移除某个指定的stash
git stash drop + 名称
5.2 清除堆栈中的所有 内容
git stash clear
版权归原作者 wangwen18 所有, 如有侵权,请联系我们删除。