Git---储藏(Stashing)
经常有这样的事情发生,当你正在进行项目中某一部分的工作,里面的东西处于一个比较杂乱的状态,而你想转到其他分支上进行一些工作。问题是,你不想提交进行了一半的工作,否则以后你无法回到这个工作点。解决这个问题的办法就是git stash命令。
“‘储藏”“可以获取你工作目录的中间状态——也就是你修改过的被追踪的文件和暂存的变更——并将它保存到一个未完结变更的堆栈中,随时可以重新应用。
下面我们来介绍下关于stash的使用:
-
储存
$ git stash
将当前工作区已修改状态下的文件储藏起来,在栈中增加一条存储。 -
列出所有存储
$ git stash list
-
重新应用储藏
$ git stash pop
重新应用最后一次储藏,同时立刻将其从堆栈中移走。 -
应用储藏
$ git stash apply stash@{0}
通过存储名应用到当前工作区,但并不会从栈中移除。 -
取消储藏
$ git stash show -p stash@{0} | git apply -R
在某些情况下,你可能想应用储藏的修改,在进行了一些其他的修改后,又要取消之前所应用储藏的修改。Git没有提供类似于 stash unapply 的命令,但是可以通过取消该储藏的补丁达到同样的效果。
你可能会想要新建一个別名,在你的 Git 里增加一个 stash-unapply 命令,这样更有效率:
$ git config --global alias.stash-unapply '!git stash show -p | git apply -R'
$ git stash apply
$ #... work work work
$ git stash-unapply
-
移除存储
$ git stash drop stashName
如果希望从栈中移除存储,则运行 git stash drop加上你希望移除的储藏的名字。 -
创建新分支
$ git stash branch branchName
这会创建一个新的分支,检出你储藏工作时的所处的提交,重新应用你的工作,如果成功,将会丢弃储藏。