简介
Git 贮藏(stashing)是一项强大的功能,它允许你临时保存本地更改而无需提交它们。当你需要在不同分支之间切换或执行其他任务而不丢失当前工作时,这一功能特别有用。在本教程中,我们将探讨如何管理多个 Git 贮藏,使你能够高效地处理和组织项目的更改。
Git 贮藏入门
Git 贮藏是一项强大的功能,它允许你临时保存本地更改,包括已暂存和未暂存的修改,而无需将它们提交到仓库。当你需要切换到不同的分支或任务,但又不想丢失已完成的工作时,这一功能特别有用。
理解 Git 贮藏:
- 贮藏(Stashing):临时保存本地更改的过程,包括已暂存和未暂存的修改。
- 贮藏内容(Stash):保存的更改集合,可以在以后检索并应用。
- 贮藏栈(Stash Stack):Git 维护一个贮藏栈,允许你管理多个贮藏的更改。
Git 贮藏的用例:
- 切换分支:当你需要切换到不同的分支,但有未提交的更改时,可以将它们贮藏起来,以后再应用贮藏内容。
- 试验更改:你可以贮藏当前的工作,尝试新的更改,如果新更改不起作用,再重新应用贮藏的更改。
- 清理工作目录:贮藏可以通过临时保存你的更改,帮助你快速清理工作目录。
graph LR
A[工作目录] --> B[暂存区]
B --> C[本地仓库]
A --> D[贮藏]
上图说明了 Git 环境下工作目录、暂存区、本地仓库和贮藏之间的关系。
贮藏与取回更改
贮藏更改
要贮藏你当前的更改,请使用以下命令:
git stash
这会将你的本地修改(包括已暂存和未暂存的更改)保存在贮藏栈中。
你还可以使用 -m 选项为贮藏添加一条消息:
git stash -m "在切换分支前保存我的工作"
取回贮藏的更改
要应用最新的贮藏内容,请使用以下命令:
git stash apply
这会将贮藏栈顶部的更改应用到你当前的工作目录,但贮藏本身仍会保留在栈中。
如果你想在应用贮藏内容后将其移除,可以使用以下命令:
git stash pop
这会应用最新的贮藏内容,然后将其从贮藏栈中移除。
查看贮藏栈
要查看贮藏更改的列表,请使用以下命令:
git stash list
这会显示栈中的所有贮藏,最新的贮藏在顶部。
stash@{0}: WIP on main: 5c3386c 提交消息
stash@{1}: WIP on main: 2b7d2ff 另一条提交消息
输出显示了贮藏引用(例如 stash@{0})以及与该贮藏关联的提交消息。
管理多个贮藏
应用特定贮藏
如果你有多个贮藏并且想要应用特定的一个,可以使用以下命令:
git stash apply stash@{index}
将 {index} 替换为你想要应用的贮藏的索引,如 git stash list 输出中所示。
删除特定贮藏
要从栈中删除特定的贮藏,使用以下命令:
git stash drop stash@{index}
同样,将 {index} 替换为你想要删除的贮藏的索引。
清空整个贮藏栈
如果你想要删除栈中的所有贮藏,使用以下命令:
git stash clear
这将从栈中删除所有贮藏的更改。
从贮藏创建分支
你可以使用以下命令直接从贮藏创建一个新分支:
git stash branch < 分支名称 > stash@{index}
这将:
- 使用指定的
<分支名称>创建一个新分支。 - 将指定索引处的贮藏应用到新分支。
- 从贮藏栈中删除已应用的贮藏。
当你想要在一个新分支中继续处理特定的一组更改时,这会很有用。
graph LR
A[工作目录] --> B[暂存区]
B --> C[本地仓库]
A --> D[贮藏栈]
D --> E[新分支]
上图说明了工作目录、暂存区、本地仓库、贮藏栈以及从贮藏创建的新分支之间的关系。
总结
通过掌握本教程中介绍的技巧,你将能够有效地管理多个 Git 贮藏,从而更轻松地在不同任务之间切换、保持 Git 仓库的整洁,并与团队更高效地协作。了解如何贮藏、取回和组织你的更改将简化基于 Git 的开发工作流程,并帮助你成为一名更熟练的 Git 用户。



