案例分析
现在有两个分支master 和 ha 分支,假设一开始 master 和 ha 分支中的文件内容都是一致的,而且两个分支的工作区都没有东西需要 add/commit ,此时,我在 master 中修改了文件,修改完成之后,执行 git status 命令我们看到 master 中有东西需要 add/commit ,此时我想切换到 ha 分支中去,但是并不想对 master 分支执行 add/commit ,这个时候我们可以执行如下命令,先将当前分支中的文件储藏起来:
$ git stash
执行完 git stash
命令之后,再执行 git status
,我们发现此时 master 分支已经是干净的了,此时我们可以切换到 ha 分中,切换到 ha 分支之后,我们发现 master 中的修改并没有干扰到 ha 分支,当我们完成了 ha 分支中的工作之后,再回到 master 分支,此时执行如下命令可以恢复刚刚储藏的数据(表示恢复最近一次储藏):
$ git stash apply
上面这个命令执行完之后,master 分支中的工作区中的文件就恢复了,此时执行 git status
就可以看到又有数据需要 add/commit 了。上面的过程如下图所示:
我们也可将工作区储藏多次,这个时候我们可以执行如下命令来查看储藏:
$ git stash list
执行效果如下:
git stash apply
表示恢复最近一次储藏,如果我们想恢复到之前的某一次储藏,可以加上储藏的名字,如下:
$ git stash apply stash@{1}
还有一些其他的关于储藏的命令:
1.恢复储藏并出栈
$ git stash pop
执行效果和 git stash apply
一样,不同的是,这里执行完之后,会将栈顶的储藏移除。
2.删除某一个储藏
$ git stash drop stash@{4}
最后一个参数是指储藏的名字。
其它文章:
Git 基本操作
Git 分支管理
Git 关联远程仓库GitHub