了解 Git 的隐藏功能——暂存
由 Mux 主办的 DEV 全球展示挑战赛:展示你的项目!
大家好👋
本文将探讨 Git 中的暂存(stash)功能。我们将涵盖以下主题:
- Stash是什么?
- 何时使用 Stash?
- 如何使用 Stash?
- 如何使用 Stash?
- 如何清空 Stash?
1. Stash是什么?
暂存(stash)一词的通用含义是将某些东西存储在隐藏的位置。在 Git 术语中也有类似的含义。它指的是将更改从工作目录移开。
2. 何时使用 Stash?
当你不想提交只完成了一半的工作,以便以后还能继续修改时,这个问题的解决方法就是使用git stash命令。
3. 如何使用 Stash?
假设我们有一个包含两个文件的 Git 仓库—— index.html&feature-1.js
在同一master分支中,文件中正在开发一个新功能,feature-2.js但该功能尚未完成。
突然,你的团队领导打电话给你,说系统里出现了一个棘手的问题feature 1,需要你立即解决。现在,你必须在feature-1.js不推送的情况下进行修改feature-2.js。
这时,git stash它将出手相助。
在这种情况下,
- 首先使用命令将未完成的文件添加到暂存区
git add,
git add feature-2.js
- 运行以下命令将文件从工作目录移动到暂存区。
// with -m flag, you can add customized stash message.
git stash push -m "feature 2 in progress"
- 然后运行命令,
git stash list查看仓库列表。你会看到仓库 ID 和相关信息。这里stash@{0}就是仓库 ID。
stash@{0}: On master: feature 2 in progress
- 该文件
feature-2.js将不会出现在您git status的工作目录中。现在,您可以继续处理feature-1.js并将修复程序推送到远程仓库。
干得好!👏
您已成功修复问题feature-1.js。
但是,如何将其恢复feature-2.js为工作副本呢?🤔
这就引出了关于如何运用储存技巧的下一节。
4. 如何使用 Stash?
就像文件通过命令从一个位置移动working directory到另一个位置一样, 必须使用命令将更改从一个位置移动到另一个位置。stashgit stash pushgit stash applystashworking directory
为此,请按照以下步骤操作:
- 要查看藏匿点列表及其 ID,请运行该
git stash list命令。您将看到藏匿点 ID 以及我们之前提供的藏匿点信息。
git stash list
stash@{0}: On master: feature 2 in progress
- 在这种情况下,
stash@{0}是仓库 ID。请在以下命令中使用此 ID 以应用更改。
git stash apply stash@{0}
- 运行上述命令后,您将看到以下输出。
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: feature-2.js
- 在上面日志的最后一行,你可以看到
feature-2.js它已从仓库中购回。现在,你可以继续进行下一步工作了Feature 2。🙌
我们再试git stash list一次。
stash@{0}: On master: feature 2 in progress
你会惊讶地发现,暂存区里的文件仍然存在。我们已经有了feature-2.js文件,但为什么它还在暂存区呢?下一节我们将介绍如何从暂存区清除文件。
5. 如何清空仓库?
有两种方法可以清除已应用的库存。
- 你可以通过 ID 删除仓库。在本例中,`
stash@{0}stash_id` 就是仓库 ID。这将仅从仓库列表中删除指定的仓库。
git stash drop stash@{0}
- 您可以彻底删除列表中的所有储藏点。警告:这将从储藏点列表中删除所有储藏点。
git stash clear
就是这样!
感谢阅读我的文章。希望你今天有所收获!
这是我下一篇关于React JS 系列文章的链接
文章来源:https://dev.to/yuvgeek/learn-the-hidden-feature-in-git-stash-k7b


