内容纲要

🗂 | 查看 Git 专题可浏览更多内容


在工作中可能会遇到紧急加塞的任务,这时工作区或暂存区的修改可能还不足以成为一个历史版本,如果你看过之前的文章会知道有一个建议就是不要将一个未完成的工作提交成版本历史,即便是一个大模块,也应该正确分割成小的完整的逻辑块来分别提交

如果还不能提交成为一个版本历史,但这时的加急工作任务需要一个「干净的工作区」,就可以使用 Git 的「贮藏 (Stash)」功能。

贮藏类似于一个高级的剪贴板,可以将一些内容暂时剪切起来,在需要的复制粘贴出来。

创建一个贮藏

$ git stash

使用贮藏后可通过 git status 命令看到,此时工作区已经是干净的了。

查看贮藏列表

使用 git stash list 会显示贮藏列表

$ git stash list
[email protected]{0}: WIP on master: 40f6729 添加正文内容
[email protected]{1}: ...
[email protected]{2}: ...
(END)

贮藏列表会显示每次贮藏的所在分支、Commit ID 以及提交信息,最新的贮藏永远是「[email protected]{0}」,而上一次的会变成「[email protected]{1}」,以此类推…你可以通过分支和提交信息判断贮藏的内容是什么,然后使用数字来调用它们。

切回贮藏

当你完成加急任务可以换回之前贮藏的内容时有两种方式:

切回最近的贮藏并移除该贮藏

如果只是一个非常简单的加急任务,快速解决后就想要调回贮藏内容,并且之后都不在使用这次贮藏,那么可以使用 pop

$ git stash pop

切回某个贮藏

如果所贮藏的内容存在可能还会多次使用的情况,并不想在切回后删除,或是并不是最近的一次贮藏,那么可以使用 apply

# git stash apply <stash-name>
$ git stash apply [email protected]{2}

删除指定贮藏或清空

如果现在想要删除指定的呢?

# git stash drop <stash-name>
$ git stash drop [email protected]{2}

如果都不想要了,一次清空吧,那么可以:

$ git stash clear

小结

贮藏很像一个剪贴板让我们得以随用随取,帮助我们快速得到一个干净的工作区,而不丢失内容或强行提交成为一个历史版本。