发布于 2026-01-05 2 阅读
0

了解 Git 中的隐藏功能 - Stash DEV 的全球展示挑战赛,由 Mux 呈现:展示你的项目!

了解 Git 的隐藏功能——暂存

由 Mux 主办的 DEV 全球展示挑战赛:展示你的项目!

大家好👋

本文将探讨 Git 中的暂存(stash)功能。我们将涵盖以下主题:

  1. Stash是什么?
  2. 何时使用 Stash?
  3. 如何使用 Stash?
  4. 如何使用 Stash?
  5. 如何清空 Stash?

1. Stash是什么?

暂存(stash)一词的通用含义是将某些东西存储在隐藏的位置。在 Git 术语中也有类似的含义。它指的是将更改从工作目录移开。

2. 何时使用 Stash?

当你不想提交只完成了一半的工作,以便以后还能继续修改时,这个问题的解决方法就是使用git stash命令。

3. 如何使用 Stash?

假设我们有一个包含两个文件的 Git 仓库—— index.html&feature-1.js

stash-1.png

在同一master分支中,文件中正在开发一个新功能,feature-2.js但该功能尚未完成。

stash-2.png

突然,你的团队领导打电话给你,说系统里出现了一个棘手的问题feature 1,需要你立即解决。现在,你必须在feature-1.js不推送的情况下进行修改feature-2.js

这时,git stash它将出手相助。

在这种情况下,

  1. 首先使用命令将未完成的文件添加到暂存区git add
git add feature-2.js
Enter fullscreen mode Exit fullscreen mode
  1. 运行以下命令将文件从工作目录移动到暂存区。
// with -m flag, you can add customized stash message.
git stash push -m "feature 2 in progress"
Enter fullscreen mode Exit fullscreen mode
  1. 然后运行命令,git stash list查看仓库列表。你会看到仓库 ID 和相关信息。这里stash@{0}就是仓库 ID。
stash@{0}: On master: feature 2 in progress
Enter fullscreen mode Exit fullscreen mode
  1. 该文件feature-2.js将不会出现在您git status的工作目录中。现在,您可以继续处理feature-1.js并将修复程序推送到远程仓库。

stash-4.png

干得好!👏

您已成功修复问题feature-1.js

但是,如何将其恢复feature-2.js为工作副本呢?🤔

这就引出了关于如何运用储存技巧的下一节。

4. 如何使用 Stash?

就像文件通过命令从一个位置移动working directory到另一个位置一样 必须使用命令将更改从一个位置移动到另一个位置stashgit stash push
git stash applystashworking directory

为此,请按照以下步骤操作:

  1. 要查看藏匿点列表及其 ID,请运行该git stash list命令。您将看到藏匿点 ID 以及我们之前提供的藏匿点信息。
git stash list
stash@{0}: On master: feature 2 in progress
Enter fullscreen mode Exit fullscreen mode
  1. 在这种情况下,stash@{0}是仓库 ID。请在以下命令中使用此 ID 以应用更改。
git stash apply stash@{0}
Enter fullscreen mode Exit fullscreen mode
  1. 运行上述命令后,您将看到以下输出。
  On branch master
  Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
    new file:   feature-2.js
Enter fullscreen mode Exit fullscreen mode
  1. 在上面日志的最后一行,你可以看到feature-2.js它已从仓库中购回。现在,你可以继续进行下一步工作了Feature 2。🙌

我们再试git stash list一次。

stash@{0}: On master: feature 2 in progress
Enter fullscreen mode Exit fullscreen mode

你会惊讶地发现,暂存区里的文件仍然存在。我们已经有了feature-2.js文件,但为什么它还在暂存区呢?下一节我们将介绍如何从暂存区清除文件。

5. 如何清空仓库?

有两种方法可以清除已应用的库存。

  1. 你可以通过 ID 删除仓库。在本例中,` stash@{0}stash_id` 就是仓库 ID。这将仅从仓库列表中删除指定的仓库。
git stash drop stash@{0}
Enter fullscreen mode Exit fullscreen mode
  1. 您可以彻底删除列表中的所有储藏点。警告:这将从储藏点列表中删除所有储藏点。
git stash clear
Enter fullscreen mode Exit fullscreen mode

就是这样!

感谢阅读我的文章。希望你今天有所收获!

这是我下一篇关于React JS 系列文章的链接

文章来源:https://dev.to/yuvgeek/learn-the-hidden-feature-in-git-stash-k7b