Git Stash 使用指南
由 Mux 主办的 DEV 全球展示挑战赛:展示你的项目!
Git 是一个功能极其强大的工具,供开发人员管理开发工作流程。毋庸置疑,Git 的功能远不止我们通常用于协作或为团队项目做出贡献的基本命令。
例如,你可能正在为产品实现一个新功能,突然收到一个严重的错误报告。因此,你不得不暂停该功能的开发,专注于解决这个错误,但你既不能提交部分代码,也不能放弃之前的进度。这就凸显了需要一个临时空间来存储部分更改,并在之后提交它们。好消息是,git 已经通过 `.gitignore` 为你解决了这个问题git stash。
本文需要具备git的基础知识。
什么是藏匿处?
Git 有一个名为暂存区(Stash)的区域,您可以在其中临时存储更改的快照,而无需将其提交到代码仓库。它独立于工作目录、暂存区或代码仓库。此外,可以存在多个暂存区。您可以将暂存区理解为临时存放数据的架子,直到您确定最终存放位置为止。
注意:暂存区位于您的 Git 仓库本地;推送时暂存区不会传输到服务器。
点击这里了解更多关于“stash”的信息。
当你对某个分支进行了更改,但你还没有准备好提交,而你需要切换到另一个分支又不想丢失这些更改时,此功能非常有用。
现在我们知道了什么是“存储”,接下来让我们看看如何存储你的作品。
藏匿变化
要将更改保存到暂存区,您可以使用:
git stash
或者
git stash save "optional message for yourself"
这将接收您的更改,将其记录在内部,然后清除工作目录。这样,您就可以切换到新分支并开发其他功能,而无需担心部分提交会破坏任何东西。
默认情况下,运行程序git stash会进行暂存:
- 已添加到索引中的更改(暂存更改)
- 对当前由 Git 跟踪的文件所做的更改(未暂存的更改)
但它不会储存:
- 工作副本中尚未暂存的新文件
- 已被忽略的文件
因此,您想要暂存的更改必须位于已跟踪的文件上。如果您创建了一个新文件并尝试暂存更改,则可能会收到错误提示No local changes to save。
但是,添加该-u选项(或--include-untracked)会告诉git stash系统也保存未跟踪的文件,您还可以通过在运行时传递该-a选项(或--all)来包含对忽略文件的更改git stash。
查看已保存的更改
要查看你的物品栏里有什么,请运行以下命令:
git stash list
这将返回一个已保存快照的列表,格式为:`<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
默认情况下,暂存区会被简单地标识为WIP(进行中的工作),位于您创建暂存区的分支和提交之上。
应用已保存的更改
要从暂存区检索更改并将其应用到当前分支,有两种方法:
git stash apply STASH-NAME
上述命令会应用更改,并在暂存区保留一份副本。如果您想将相同的暂存更改应用到多个分支,这将非常有用。
git stash pop STASH-NAME
上述命令会应用更改并从暂存区中删除文件。
注意:如果省略上述命令中的 STASH_NAME,git 基本上会使用最新暂存的更改执行所请求的操作。
删除已暂存的更改
如果想删除暂存的更改而不应用它们,请运行以下命令:
git stash drop STASH-NAME
要清空所有物品,请运行以下命令:
git stash clear
结论
虽然git stash`git commit` 并非常用命令,但它对于进行有意义的提交非常有用。下次当你想要暂停某些操作并在之后继续执行时,请记住这一点。
本文到此结束。希望它能帮助您理解一些基础知识git stash。欢迎在评论区留下您宝贵的建议和反馈。
如果您想与我联系,请点击以下链接:
LinkedIn | GitHub | Twitter | Medium
文章来源:https://dev.to/pragativerma18/a-guide-to-git-stash-2h5d




