git stash介绍(临时保存当前工作目录中尚未提交的修改)

文章目录

      • **核心功能**
        • [1. **保存未提交的修改**](#1. 保存未提交的修改)
        • [2. **恢复保存的修改**](#2. 恢复保存的修改)
        • [3. **管理多个临时状态**](#3. 管理多个临时状态)
      • **典型使用场景**
        • [- **处理紧急任务**:正在开发新功能,但突然需要切换分支修复紧急 Bug。](#- 处理紧急任务:正在开发新功能,但突然需要切换分支修复紧急 Bug。)
        • [- **清理工作区**:需要测试或合并代码时,快速还原干净的工作目录。](#- 清理工作区:需要测试或合并代码时,快速还原干净的工作目录。)
        • [- **保存实验性代码**:临时保存可能不需要长期保留的修改。](#- 保存实验性代码:临时保存可能不需要长期保留的修改。)
      • **常用命令**
      • **高级用法**
        • [1. **保存未跟踪文件**](#1. 保存未跟踪文件)
        • [2. **保存特定文件**](#2. 保存特定文件)
        • [3. **从 `stash` 创建新分支**](#3. stash 创建新分支)
        • [4. **查看 `stash` 内容**](#4. 查看 stash 内容)
      • **注意事项**
        • [- `stash` 仅保存当前分支的修改,与分支无关。](#- stash 仅保存当前分支的修改,与分支无关。)
        • [- 多次 `git stash` 会形成一个栈,恢复时默认按 LIFO 顺序处理。](#- 多次 git stash 会形成一个栈,恢复时默认按 LIFO 顺序处理。)
        • [- 如果 `stash` 的修改与当前工作区冲突,需手动解决冲突。](#- 如果 stash 的修改与当前工作区冲突,需手动解决冲突。)
      • **示例流程**
        • [1. **保存修改**](#1. 保存修改)
        • [2. **切换分支处理紧急任务**](#2. 切换分支处理紧急任务)
        • [3. **恢复修改**](#3. 恢复修改)

git stash 是 Git 提供的一个功能,用于 临时保存当前工作目录中尚未提交的修改 (包括工作区和暂存区的更改),以便在需要时恢复这些修改。它特别适用于以下场景:


核心功能

1. 保存未提交的修改

当你需要切换分支、处理紧急任务或清理工作区时,无需提交未完成的代码,可以使用 git stash 将当前修改保存到一个栈中。

2. 恢复保存的修改

在需要时,可以将之前保存的修改重新应用到工作区,继续开发。

3. 管理多个临时状态

Git 会以栈(LIFO,后进先出)的方式管理多个 stash 记录,支持查看、恢复和删除特定记录。


典型使用场景

- 处理紧急任务:正在开发新功能,但突然需要切换分支修复紧急 Bug。
- 清理工作区:需要测试或合并代码时,快速还原干净的工作目录。
- 保存实验性代码:临时保存可能不需要长期保留的修改。

常用命令

命令 功能
git stashgit stash push 保存当前工作区和暂存区的修改(默认不包含未跟踪文件)。
git stash list 查看所有保存的 stash 记录(如 stash@{0})。
git stash apply [stash@{n}] 恢复指定的 stash(保留记录)。
git stash pop [stash@{n}] 恢复最近的 stash 并删除记录。
git stash drop [stash@{n}] 删除指定的 stash 记录。
git stash clear 清空所有 stash 记录。

高级用法

1. 保存未跟踪文件

默认 git stash 不保存未跟踪文件(untracked)或被忽略文件(.gitignore 中的文件),需添加参数:

  • git stash -u:保存未跟踪文件。
  • git stash -a:保存未跟踪文件和被忽略文件。
2. 保存特定文件

仅保存部分文件的修改:

bash 复制代码
git stash push <file-path>
3. stash 创建新分支

直接基于某个 stash 创建新分支并恢复修改:

bash 复制代码
git stash branch <branch-name> stash@{n}
4. 查看 stash 内容
  • 查看简要差异:git stash show [stash@{n}]
  • 查看完整补丁:git stash show -p [stash@{n}]

注意事项

- stash 仅保存当前分支的修改,与分支无关。
- 多次 git stash 会形成一个栈,恢复时默认按 LIFO 顺序处理。
- 如果 stash 的修改与当前工作区冲突,需手动解决冲突。

示例流程

1. 保存修改
bash 复制代码
git stash push -m "暂存未完成的功能开发"
2. 切换分支处理紧急任务
bash 复制代码
git checkout main
# 修复 Bug 后提交
git commit -am "修复紧急 Bug"
3. 恢复修改
bash 复制代码
git checkout dev
git stash pop  # 恢复并删除最近的 stash

通过 git stash,你可以灵活管理未提交的代码,避免频繁提交或丢失工作进度。

相关推荐
东方欲晓w39 分钟前
Git高效开发:常用命令速查指南
git·stm32·学习
_Power_Y40 分钟前
Linux&git入门&设计模式(常考点)
linux·git·设计模式
刘永鑫Adam3 小时前
代码管理及Linux模拟工具Git for Windows安装使用教程
linux·运维·服务器·git
moringlightyn16 小时前
进度条+ 基础开发工具----版本控制器git 调试器gdb/cgdb
笔记·git·其他·c·调试器·gdb/cgdb·进度条 倒计时
自由日记17 小时前
入门git:部署到公网
git
QT 小鲜肉19 小时前
【Git、GitHub、Gitee】按功能分类汇总Git常用命令详解(超详细)
c语言·网络·c++·git·qt·gitee·github
wukan88820 小时前
【SMTP】在线配置测试工具,如何配置接口?
git·网络协议·编辑器
winner888120 小时前
Git 开发全流程规范:分支创建+关联远程+rebase同步+分支清理实战
git·rebase·git rebase·git branch -d
百锦再1 天前
第10章 错误处理
java·git·ai·rust·go·错误·pathon
静心观复2 天前
git revert 2
git