Git Stash 的使用

1. 有虚圈,不切换

在使用 Git 时,如果有未提交( 包括 Unstage 和 Staged )的文件时,不要切换分支( 也不要去「翻旧账」)

简而言之:有虚圈,不切换。

git-stash.gif

之所以有这样的惯例原因有二:

  1. 有可能你会切换失败,如上图,你想切都没得切。这是因为你的未提交文件和你要切换的那个分支的文件有内容冲突。

  2. 如果没冲突,你能切换成功,但是会导致逻辑混乱。初学者一不小心,后续操作就会出状况,到时候又是一堆麻烦要解决。

什么情况下会出现「有虚圈,需要你切换」的场景?常见两种场景:

  1. 你在你的开发分支上开发到一半,需要同步远端 master 分支代码。此时,你需要从你的开发分支切换到 master 分支,但是你的开发分支上有「虚圈」。

  2. 手头的工作被打断,需要紧急修复 master 分支上的 bug 。此时,你需要从 master 分支上新建分支,再从你的开发分支切换到这个新分支,但是你的开发分支上有「虚圈」。

再重复一遍:有虚圈,不切换。

2. Git Stash 的作用

这里,我们面对着一个矛盾:有虚圈,不切换,但是我们当前的工作任务又需要我们切换分支( 或去「翻旧账」)。怎么办?靠 git stash 命令。

git stash 用于想要保存当前的未提交( Unstage 和 Stage )的修改。

git-stash-01.gif

git stash 将本地的修改保存起来,并且将当前代码切换到 HEAD 提交上,即,你磁盘上的文件会恢复成未修改之前的样子。

简单来说

使用 git stash 还你一个干净的工作目录!

3. Git Stash 的使用

  1. 有虚圈,不切换。

  2. git stash 存档,暂存未提交修改。

  3. 切换,搞事情;搞完事情,切回来。

  4. git pop 读档,继续完成「当年」未完成的工作。

Last Updated:
Contributors: hemiao