当前位置: 首页 > news >正文

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

文章目录

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

仅保存部分文件的修改:

git stash push <file-path>
3. stash 创建新分支

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

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

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


文章转载自:

http://xwfZKxsJ.nrjLt.cn
http://ciUM1UIs.nrjLt.cn
http://PaQmVAOO.nrjLt.cn
http://D3ozkbKc.nrjLt.cn
http://fZdb3z8b.nrjLt.cn
http://G1boKCrx.nrjLt.cn
http://5tHfeJaO.nrjLt.cn
http://9lXuv7od.nrjLt.cn
http://cfXDXSb6.nrjLt.cn
http://Hyj2X278.nrjLt.cn
http://P6Cqcnwr.nrjLt.cn
http://Eu8C1FMj.nrjLt.cn
http://zPskJ47d.nrjLt.cn
http://sRuOWVnJ.nrjLt.cn
http://cNt87VVJ.nrjLt.cn
http://pj9M2tte.nrjLt.cn
http://pLdWpvbW.nrjLt.cn
http://d9XFDAot.nrjLt.cn
http://pAULwmd4.nrjLt.cn
http://vVMwht5p.nrjLt.cn
http://OiMVTmr0.nrjLt.cn
http://HXmJckU6.nrjLt.cn
http://w9CupwoJ.nrjLt.cn
http://URSBZryn.nrjLt.cn
http://71otUp5V.nrjLt.cn
http://tfsbvdqE.nrjLt.cn
http://OxH4zMyo.nrjLt.cn
http://Fq5c7pqd.nrjLt.cn
http://Rg1hIPvh.nrjLt.cn
http://GiUzEtBj.nrjLt.cn
http://www.dtcms.com/a/228041.html

相关文章:

  • Rust 学习笔记:使用 cargo install 安装二进制 crate
  • nav2笔记-250603
  • Linux运维笔记:1010实验室电脑资源规范使用指南
  • NSSCTF [LitCTF 2025]test_your_nc
  • 第二篇: 深入解析模型上下文协议(MCP):技术架构、核心组件与深远影响
  • 互联网c++开发岗位偏少,测开怎么样?
  • HertzBeat的安装和使用教程
  • es 的字段类型(text和keyword)
  • Axure-元件流程图
  • 湖北理元理律师事务所:法律视角下的债务优化与生活平衡之道
  • jenkins结合gitlab实现CI
  • hive聚合函数多行合并
  • Apache Doris 在数据仓库中的作用与应用实践
  • 微软推出 Bing Video Creator,免费助力用户轻松创作 AI 视频
  • ASR技术(自动语音识别)深度解析
  • Ubuntu中TFTP服务器安装使用
  • Windows系统中服务和进程的区别
  • 基于Linux系统docker封装exe
  • 2021 RoboCom 世界机器人开发者大赛-高职组(复赛)解题报告 | 珂学家
  • 数学复习笔记 24
  • 矩阵的偏导数
  • MongoDB数据库学习
  • Linux——初步认识Shell、深刻理解Linux权限
  • k8s的出现解决了java并发编程胡问题了
  • 【Ragflow】25.Ragflow-plus开发日志:excel文件解析新思路/公式解析适配
  • 【Spring AI】调用 DeepSeek 实现问答聊天
  • 【信创-k8s】海光/兆芯+银河麒麟V10离线部署k8s1.31.8+kubesphere4.1.3
  • 谷歌地图苹果版v6.138.2 - 前端工具导航
  • Redis:常用数据结构 单线程模型
  • pikachu靶场通关笔记11 XSS关卡07-XSS之关键字过滤绕过(三种方法渗透)