如何恢复 Git 暂存的更改

GitGitBeginner
立即练习

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

简介

Git stash 是一项强大的功能,它允许开发者临时存储未提交的更改,从而实现流畅的上下文切换和工作区管理。本教程将探讨检索和管理暂存工作的综合技术,帮助程序员高效地处理他们的开发工作流程。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/DataManagementGroup(["Data Management"]) git/BasicOperationsGroup -.-> git/commit("Create Commit") git/DataManagementGroup -.-> git/stash("Save Changes Temporarily") git/DataManagementGroup -.-> git/restore("Revert Files") git/BranchManagementGroup -.-> git/checkout("Switch Branches") git/BranchManagementGroup -.-> git/log("Show Commits") subgraph Lab Skills git/commit -.-> lab-418147{{"如何恢复 Git 暂存的更改"}} git/stash -.-> lab-418147{{"如何恢复 Git 暂存的更改"}} git/restore -.-> lab-418147{{"如何恢复 Git 暂存的更改"}} git/checkout -.-> lab-418147{{"如何恢复 Git 暂存的更改"}} git/log -.-> lab-418147{{"如何恢复 Git 暂存的更改"}} end

Git Stash 基础

什么是 Git Stash?

Git stash 是一项强大的功能,它允许开发者临时保存未提交的更改,而无需将其提交到仓库。当你需要切换分支或拉取更新,但还未准备好提交当前工作时,它特别有用。

为什么使用 Git Stash?

开发者在以下场景中使用 Git Stash:

  • 切换分支时存在未保存的更改
  • 暂停当前工作以处理紧急任务
  • 清理工作目录

基本的 Stash 命令

暂存更改

要暂存当前的修改,使用以下命令:

git stash

此命令会保存你的未提交更改,并将工作目录恢复到上一次提交的状态。

带消息的暂存

你可以为暂存添加描述性消息:

git stash save "Work in progress: feature implementation"

Stash 变体

Stash 命令 用途
git stash 保存更改并保持工作目录干净
git stash -u 也暂存未跟踪的文件
git stash pop 应用并移除最近的暂存
git stash apply 应用暂存但不移除它

工作流程可视化

graph TD A[工作目录] -->|git stash| B[暂存区] B -->|git stash pop| A B -->|git stash apply| A

最佳实践

  • 将 stash 用于临时更改
  • 为 stash 添加有意义的消息
  • 定期清理暂存的更改

通过掌握 Git stash,使用 LabEx 平台的开发者可以更高效地管理工作,并保持干净、有序的开发工作流程。

检索暂存的工作

列出暂存的更改

在检索暂存的工作之前,你可能想要查看可用的暂存:

git stash list

示例输出:

stash@{0}: WIP on feature: 9f8d3a2 Implement login
stash@{1}: On main: database configuration changes

应用暂存的更改

弹出暂存

要应用并移除最近的暂存:

git stash pop

应用特定的暂存

要应用特定的暂存而不移除它:

git stash apply stash@{1}

暂存检索策略

策略 命令 行为
应用最新的 git stash pop 应用并移除顶部暂存
应用特定的 git stash apply stash@{n} 应用暂存而不移除
选择性检索 git stash show -p stash@{n} 显示特定暂存的补丁

工作流程可视化

graph TD A[暂存列表] -->|选择暂存| B[工作目录] B -->|git stash pop| C[更改已应用] B -->|git stash apply| D[更改已复制]

处理冲突

应用暂存的更改时,可能会出现潜在的合并冲突:

## 如果存在冲突
git stash apply
## 手动解决冲突
git add.
git commit

高级检索技术

从暂存创建分支

git stash branch new-feature-branch stash@{0}

此命令创建一个新分支并应用暂存的更改。

LabEx 开发者的最佳实践

  • 应用之前始终检查暂存列表
  • 使用描述性的暂存消息
  • 仔细解决冲突
  • 定期清理不必要的暂存

通过掌握这些检索技术,开发者可以在不同的开发场景中高效地管理和恢复他们的工作。

暂存管理技巧

清理暂存

删除单个暂存

要删除特定的暂存:

git stash drop stash@{1}

清除所有暂存

要删除所有暂存的更改:

git stash clear

暂存管理策略

操作 命令 目的
列出暂存 git stash list 查看所有保存的暂存
删除特定暂存 git stash drop 删除单个暂存
清除所有暂存 git stash clear 删除所有暂存的更改

高级暂存技术

暂存未跟踪的文件

将未跟踪的文件包含在暂存中:

git stash -u

部分暂存

仅暂存特定文件:

git stash push -m "Partial changes" path/to/file1 path/to/file2

工作流程可视化

graph TD A[工作目录] -->|git stash -u| B[暂存区] B -->|git stash list| C[查看暂存] B -->|git stash drop| D[删除特定暂存] B -->|git stash clear| E[删除所有暂存]

LabEx 开发者的暂存最佳实践

  1. 使用有意义的暂存消息
  2. 定期审查和清理暂存
  3. 避免将暂存用作长期存储解决方案
  4. 应用旧暂存时要谨慎

处理大型暂存

检查暂存内容

查看特定暂存的内容:

git stash show -p stash@{0}

从暂存创建分支

将暂存的更改安全地提取到新分支:

git stash branch new-feature-branch stash@{0}

要避免的常见陷阱

  • 不要用暂存替代提交
  • 应用旧暂存时要小心
  • 应用前始终验证暂存内容
  • 保持暂存列表干净且有条理

通过实施这些管理技巧,开发者可以有效地将 Git stash 用作管理临时更改和保持工作目录整洁的强大工具。

总结

理解 Git stash 的恢复方法,能让开发者无缝管理代码更改、在任务间切换,并维持一个干净的版本控制环境。通过掌握 stash 技术,程序员可以提高工作效率,并保持更有条理的开发流程。