在自己分支改代码改的正爽,这个时候来了个bug需要切到develop分支,这个时候想切换分支但是当前分支改动一大堆,既不想提交自己分支没改完的代码,又不能撤销,就可以使用git stash
这个命令,它可以将你现在的工作现场保存在一个栈里,等你去别的分支改完bug回来后,再使用git stash apply
命令,就可以恢复你的工作现场了,回来后所有你修改的代码仍然是未修改的状态,这样可以继续你的思路,看看哪些是正在修改的地方而不至于匆忙commit回来后漏掉之前修改的地方了。
用过的人会觉得很简单,没用过的人还得在网上搜一圈,感觉也不是很直观,下面说一下简单使用:
一.stash
可以看到我现在在自己的test分支,在项目中的某一个文件里加入了一个fuck方法,现在我吃了一个bug,需要切换到develop分支而我又不想提交这个fuck方法,那么我就先stash一下,这里我用的是Sourcetree,命令行也是一样的。
点击Sourcetree的stash按钮。
这里可以输入一个statsh的message,和commit时的message一样,方便记录你的stash信息,下面有个选项keep staged changes暂时没发现干啥用的,可勾可不勾。
可以看到stash完以后当前分支已经看不到任何修改了,这样我就可以随便切换到我想去的分支了,假设我切到develop分支改掉了那个bug,现在又切会test分支,现在我要恢复刚才我修改fuck方法的那个现场,有两种方式,1.Sourcetree 2.命令行。
二.恢复
1.Sourcetree恢复
最新版Souretree左边栏最底部就能看到一栏STASHES,这里看到了我之前的在test分支上的stash,直接双击
弹框出来问你是否恢复后要删除这项stash,删不删随你,这里我就不删了。
2.命令行恢复
(1).从Sourcetree打开终端。
(2).输入git stash apply
命令
以上两种方式结束后:
是不是很惊喜,你修改的文件和代码,又回到之前的状态了,还是那个熟悉的fuck方法。
三.注意
注意点:对于新加入的文件,在stash的时候一定要将它们勾选到staged files(暂存区)中,不然是不会被stash的。
上面的dddd.h、dddd.m和一张蒙层.png都是新加入的文件,这几个文件没有被勾选进staged files(暂存区)是不会被stash的,应该像下面这样
以上基本就是stash的快速入门了,当然他也有高级的用法,目前项目中我觉得会这种最基本的就可以解决我开头提到的痛点了。
四.总结
1.点击Sourcetree上方的stash按钮,输入message
2.点击Sourcetree上方的Ternimal按钮
3.在Srourcetree左下方切回stash或者在命令行中输入git stash apply
3步搞定,是不是非常的酷😎。