总的来说,git stash命令的作用就是将目前还不想提交的但是已经修改的内容进行保存至堆栈中,后续可以在某个分支上恢复出堆栈中的内容。这也就是说,stash中的内容不仅仅可以恢复到原先开发的分支,也可以恢复到其他任意指定的分支上。git stash作用的范围包括工作区和暂存区中的内容,也就是说没有提交的内容都会保存至堆栈中。
保存当前工作进度,会把暂存区和工作区的改动保存起来。执行完这个命令后,在运行git status命令,就会发现当前是一个干净的工作区,没有任何改动。
1 |
git stash |
使用save可以添加一些注释。
1 |
git stash save 'message...' |
显示保存进度的列表。
如下为恢复最新的进度到工作区。git默认会把工作区和暂存区的改动都恢复到工作区。
1 |
git stash pop |
如下为恢复最新的进度到工作区和暂存区。(尝试将原来暂存区的改动还恢复到暂存区)
1 |
git stash pop --index |
如下为恢复指定的进度到工作区。stash_id是通过git stash list命令得到的。
1 |
git stash pop stash@{1} |
通过git stash pop命令恢复进度后,会删除当前进度
将堆栈中的内容应用到当前目录,不同于git stash pop,该命令不会将内容从堆栈中删除,也就说该命令能够将堆栈的内容多次应用到工作目录中,适应于多个分支的情况。
删除一个存储的进度。如果不指定stash_id,则默认删除最新的存储进度。
删除所有存储的进度。
查看堆栈中最新保存的stash和当前目录的差异。
从最新的stash创建分支。
应用场景:当储藏了部分工作,暂时不去理会,继续在当前分支进行开发,后续想将stash中的内容恢复到当前工作目录时,如果是针对同一个文件的修改(即便不是同行数据),那么可能会发生冲突,恢复失败,这里通过创建新的分支来解决。可以用于解决stash中的内容和当前目录的内容发生冲突的情景。
发生冲突时,需手动解决冲突。
参考来自:
https://blog.csdn.net/stone_yw/article/details/80795669,
https://blog.csdn.net/daguanjia11/article/details/73810577,
https://git-scm.com/docs/git-stash/2.0.0
from:https://blog.csdn.net/longgeaisisi/article/details/101842891