参考
https://www.cnblogs.com/tocy/p/git-stash-reference.html
保存当前的工作内容,而不需要做提交操作.
应用场景
有一个或一些的类该次提交不需要,但觉得以后可能会有用,可以把这些类stash到本地.
当前正在修改时,需要切换到其他分支或者在当前分支修改一些bug时,但又不想或不能把当前的改动提交,则可以把正在修改的内容stash到本地.
等等等等..
用法
git stash
git stash 会把所有未提交的修改(包括暂存的和非暂存的)都保存起来,用于后续恢复当前工作目录。
执行git stash后,暂存和非暂存区的内容都被stash到本地,而未纳入git管理的文件并没有被stash到本地.
再来看git当前状态
暂存区和非暂存区的内容已经没了,被stash到本地了.只剩下未纳入git管理的文件,也就是未被stash到本地的文件.
git stash list
查看现有的stash
git stash save "message"
给stash添加提交消息
先将上面的Pig文件添加到暂存区
然后git stash save
查看
这样就知道stash的大概内容是什么了,清晰直观.
而第一次stash的内容没有附加描述信息,很容易忘记stash的内容是什么.当然可以查看里面的内容,这个和提交代码git commit -m "message"基本上差不多.
git stash apply / git stash pop
因为各种原因而被stash到本地的代码怎么恢复呢,这里就可以用到 git stash apply 或者 git stash pop
stash的过程,差不多和操作栈的过程差不多.
而apply和pop的差别,就是pop在恢复最近的stash内容的同时会删除该stash记录.而apply不会.
git stash apply
git stash pop
之所以说类似于操作栈,是因为它又不同于栈的先进后出,因为它可以有选择的apply或者pop.
git stash drop
删除stash记录
删除指定的stash记录
git stash show
查看stash的内容
git stash show -p 或者 git stash show --patch 可以查看特定stash的全部diff.
查看指定的stash内容
git stash branch
如果在stash之后修改的内容与stash的内容有冲突
发生冲突的情况,被pop的stash依然存在.
这时候你需要去解决冲突.
如果你只是想继续上次的工作不想被这些冲突所折磨的话,则可以使用 git stash branch 在新的分支上继续之前的工作.
当然,stash之后记录随之被删除.