git stash的作用
当我们在工作中遇到紧急的bug需要修改,而我们正在开发一些新的功能或者做了一些实验改动的时候,我们希望保存我们的测试代码,但是又不希望将我们的改动提交到版本库,这个时候我们就可以使用git stash,顾名思义,它的意思就是将我们的改动暂存起来,然后在我们修改完 bug 之后,我们在重新恢复我们的改动,继续我们的编码。
git stash 的基本用法
git stash
git stash save
git stash -u
git stash list
git stash pop
我们最常使用的命令就是直接git stash,它就会将我们的改动暂存起来,但是,有些时候我们可能新添加一了一些文件,还没有被添加到版本库里面,这个时候,我们可以使用git stash -u来暂存那些未保存或者叫做未追踪的代码。
git stash 是可以进行多次暂存的,如何查看多次暂存的情况,我们可以使用命令git stash list,它可以帮助我们显示出暂存列表,其中stash@{0}就是最近的一次暂存记录。
当我们修改完bug之后,我们想要恢复暂存的数据的时候,我们直接使用git stash pop即可,它就会帮我们恢复到之前代码保存的地方。
注意
有些人可能会认为直接切换分支,就不用暂存了,这是错误的,因为如果我们不使用git stash保存临时改动的话,当我们切换分支的时候,它会将改动同步到切换的分支上,这会导致代码变得异常混乱。
git stash 的高级用法
当我们想要恢复保存的改动的时候,除了git stash pop之外,还有一个git stash apply可以使用,它也会帮助我们恢复之前的改动,和git stash pop的区别是,它不会删除git stash list的记录,意味着,将来你还可以使用git stash pop恢复暂存的改动。
当我们想要删除所有的暂存的时候,我们可以使用git stash clear命令,如果我们只想要删除某一个stash,我们可以使用git stash drop stash@{1}命令。
此外,还有一个高级命令,那就是如果我们想要使用stash创建一个分支也是可以的,比如我们可以使用命令git stash branch
创建一个新的分支,如果想要指定其它的分支,就采用git stash branch
stash@{2}。
git stash 的原理
我们可以将stash理解成为一个当铺,我们临时需要钱的时候,我们可以将我们暂时不用的东西存到当铺里面,每次我们向里面存放东西的时候,最后存进去的都会在最外面,我们最早存放的东西都会在最里面。
这个当铺在我们存放东西的时候都会给它们贴上标签,这样我们就可以通过标签来拿回我们之前存的东西。
git stash给了我们在版本库之外一个保存数据的方式,通过这种方式我们可以让版本看起来更整洁,可以让我们的临时改动可以得到保存而又不影响版本库。