发布于 2026-01-06 7 阅读
0

Git Stash DEV 全球展示挑战赛指南(由 Mux 呈现):展示你的项目!

Git Stash 使用指南

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

Git 是一个功能极其强大的工具,供开发人员管理开发工作流程。毋庸置疑,Git 的功能远不止我们通常用于协作或为团队项目做出贡献的基本命令。

例如,你可能正在为产品实现一个新功能,突然收到一个严重的错误报告。因此,你不得不暂停该功能的开发,专注于解决这个错误,但你既不能提交部分代码,也不能放弃之前的进度。这就凸显了需要一个临时空间来存储部分更改,并在之后提交它们。好消息是,git 已经通过 `.gitignore` 为你解决了这个问题git stash

index.png

本文需要具备git的基础知识。

什么是藏匿处?

Git 有一个名为暂存区(Stash)的区域,您可以在其中临时存储更改的快照,而无需将其提交到代码仓库。它独立于工作目录、暂存区或代码仓库。此外,可以存在多个暂存区。您可以将暂存区理解为临时存放数据的架子,直到您确定最终存放位置为止。

git-stash-stack

注意:暂存区位于您的 Git 仓库本地;推送时暂存区不会传输到服务器。

点击这里了解更多关于“stash”的信息

当你对某个分支进行了更改,但你还没有准备好提交,而你需要切换到另一个分支又不想丢失这些更改时,此功能非常有用。

现在我们知道了什么是“存储”,接下来让我们看看如何存储你的作品。

藏匿变化

要将更改保存到暂存区,您可以使用:

git stash 
Enter fullscreen mode Exit fullscreen mode

或者

git stash save "optional message for yourself"
Enter fullscreen mode Exit fullscreen mode

这将接收您的更改,将其记录在内部,然后清除工作目录。这样,您就可以切换到新分支并开发其他功能,而无需担心部分提交会破坏任何东西。

默认情况下,运行程序git stash会进行暂存:

  • 已添加到索引中的更改(暂存更改)
  • 对当前由 Git 跟踪的文件所做的更改(未暂存的更改)

但它不会储存:

  • 工作副本中尚未暂存的新文件
  • 已被忽略的文件

因此,您想要暂存的更改必须位于已跟踪的文件上。如果您创建了一个新文件并尝试暂存更改,则可能会收到错误提示No local changes to save

但是,添加该-u选项(或--include-untracked)会告诉git stash系统也保存未跟踪的文件,您还可以通过在运行时传递该-a选项(或--all)来包含对忽略文件的更改git stash

Git Stash

查看已保存的更改

要查看你的物品栏里有什么,请运行以下命令:

git stash list
Enter fullscreen mode Exit fullscreen mode

这将返回一个已保存快照的列表,格式为:`<stash_name>`。stash@{0}: BRANCH-STASHED-CHANGES-ARE-FOR: MESSAGE.其中,stash@{0}`<stash_name>` 是暂存区的名称,花括号 `<index> { }` 中的数字是该暂存区的索引。如果您暂存了多个变更集,则每个变更集都会有不同的索引。例如:

$ git stash list
stash@{0}: On main: add style to our site
stash@{1}: WIP on main: 5002d47 our new homepage
stash@{2}: WIP on main: 5002d47 our new homepage
Enter fullscreen mode Exit fullscreen mode

藏匿清单

默认情况下,暂存区会被简单地标识为WIP(进行中的工作),位于您创建暂存区的分支和提交之上。

应用已保存的更改

要从暂存区检索更改并将其应用到当前分支,有两种方法:

git stash apply STASH-NAME
Enter fullscreen mode Exit fullscreen mode

上述命令会应用更改,并在暂存区保留一份副本。如果您想将相同的暂存更改应用到多个分支,这将非常有用。

git stash pop STASH-NAME
Enter fullscreen mode Exit fullscreen mode

上述命令会应用更改并从暂存区中删除文件。

注意:如果省略上述命令中的 STASH_NAME,git 基本上会使用最新暂存的更改执行所请求的操作。

删除已暂存的更改

如果想删除暂存的更改而不应用它们,请运行以下命令:

git stash drop STASH-NAME
Enter fullscreen mode Exit fullscreen mode

要清空所有物品,请运行以下命令:

git stash clear
Enter fullscreen mode Exit fullscreen mode

结论

虽然git stash`git commit` 并非常用命令,但它对于进行有意义的提交非常有用。下次当你想要暂停某些操作并在之后继续执行时,请记住这一点。

保持冷静

本文到此结束。希望它能帮助您理解一些基础知识git stash。欢迎在评论区留下您宝贵的建议和反馈。
如果您想与我联系,请点击以下链接:

LinkedIn | GitHub | Twitter | Medium

文章来源:https://dev.to/pragativerma18/a-guide-to-git-stash-2h5d