如何管理多个 Git 贮藏

GitGitBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

Git 贮藏(stashing)是一项强大的功能,它允许你临时保存本地更改而无需提交它们。当你需要在不同分支之间切换或执行其他任务而不丢失当前工作时,这一功能特别有用。在本教程中,我们将探讨如何管理多个 Git 贮藏,使你能够高效地处理和组织项目的更改。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/DataManagementGroup(["Data Management"]) git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/BasicOperationsGroup -.-> git/commit("Create Commit") git/DataManagementGroup -.-> git/stash("Save Changes Temporarily") git/DataManagementGroup -.-> git/restore("Revert Files") git/BranchManagementGroup -.-> git/branch("Handle Branches") git/BranchManagementGroup -.-> git/checkout("Switch Branches") subgraph Lab Skills git/commit -.-> lab-417927{{"如何管理多个 Git 贮藏"}} git/stash -.-> lab-417927{{"如何管理多个 Git 贮藏"}} git/restore -.-> lab-417927{{"如何管理多个 Git 贮藏"}} git/branch -.-> lab-417927{{"如何管理多个 Git 贮藏"}} git/checkout -.-> lab-417927{{"如何管理多个 Git 贮藏"}} end

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}

这将:

  1. 使用指定的 <分支名称> 创建一个新分支。
  2. 将指定索引处的贮藏应用到新分支。
  3. 从贮藏栈中删除已应用的贮藏。

当你想要在一个新分支中继续处理特定的一组更改时,这会很有用。

graph LR A[工作目录] --> B[暂存区] B --> C[本地仓库] A --> D[贮藏栈] D --> E[新分支]

上图说明了工作目录、暂存区、本地仓库、贮藏栈以及从贮藏创建的新分支之间的关系。

总结

通过掌握本教程中介绍的技巧,你将能够有效地管理多个 Git 贮藏,从而更轻松地在不同任务之间切换、保持 Git 仓库的整洁,并与团队更高效地协作。了解如何贮藏、取回和组织你的更改将简化基于 Git 的开发工作流程,并帮助你成为一名更熟练的 Git 用户。