暂时保存 Git 更改

内容纲要

查看【Git】专题可浏览更多内容

暂时保存更改

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

如果还不能提交成为一个版本历史,但这时的加急工作任务需要一个「干净的工作区」,就可以使用 Git 的「贮藏 (Stash)」功能,贮藏类似于一个高级的剪贴板,可以将一些内容暂时剪切起来,在需要的复制粘贴出来。

创建一个贮藏

git stash

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

查看贮藏列表

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

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

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

切回贮藏

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

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

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

git stash pop

切回某个贮藏

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

# git stash apply <stash-name>
git stash apply stash@{2}

删除指定贮藏或清空

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

# git stash drop <stash-name>
git stash drop stash@{2}

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

git stash clear