news 2026/9/11 8:41:37

Day 42:Git的高级技巧:使用Git的stash管理未提交的更改

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Day 42:Git的高级技巧:使用Git的stash管理未提交的更改

Day 42:Git的高级技巧:使用Git的stash管理未提交的更改

“你有没有经历过这样的’崩溃时刻’:你正在写一个重要的功能,突然收到一个紧急的bug修复请求,结果你还没提交的代码就’消失’了?或者你正在修改一个文件,突然发现需要切换到另一个分支,但又不想提交未完成的工作?别担心,Git的stash就是你的’工作暂存区’!”

🌟 为什么stash是Git的"工作暂存区"?

想象一下,你正在厨房做饭,突然电话响了,需要出去接电话。你会把正在炒的菜放在一边,等接完电话再回来继续炒。Git的stash就是你的’工作暂存区’,它让你可以暂时保存未提交的更改,以便你可以切换到其他任务,之后再回来继续工作。

重点:stash是Git的’工作暂存区’,它允许你暂时保存未提交的更改,以便你可以切换分支或进行其他操作,之后再恢复这些更改

在GitCode上,stash是本地功能,不会自动推送到远程仓库。它只保存在你的本地Git仓库中,让你可以安全地切换工作环境。

🧠 核心知识点:stash的类型与用途

Git stash有多种类型:

类型命令说明适用场景
默认stashgit stash保存所有未提交的更改临时切换工作环境
带消息的stashgit stash save "message"保存带描述的更改便于识别不同的stash
带路径的stashgit stash -p保存特定文件的更改只保存部分更改
临时stashgit stash -u保存未跟踪的文件保存未跟踪的文件

关键点

  1. stash保存的是"未提交的更改",不是提交
  2. stash会保存工作区和暂存区的更改
  3. stash是本地功能,不会推送到远程仓库
  4. stash列表会保存在本地,直到你手动删除

小贴士:在GitCode上,stash不会显示在仓库的"提交历史"中,它只存在于你的本地环境中。

💻 AtomGit(GitCode)实操步骤

🛠 步骤1:创建测试项目

# 1. 创建项目mkdirgit-stash-demo&&cdgit-stash-demogitinitecho"# Git Stash Demo">README.mdgitaddREADME.mdgitcommit-m"Initial commit"

🛠 步骤2:模拟未完成的工作

# 1. 修改文件echo"Feature 1">>README.md# 2. 添加到暂存区gitaddREADME.md# 3. 创建新分支gitbranch feature-1

🛠 步骤3:使用stash保存更改

# 1. 保存未提交的更改gitstash# 2. 查看stash列表gitstash list

执行结果示例:

stash@{0}: WIP on feature-1: 1a2b3c4 Add feature 1

🛠 步骤4:切换分支并恢复stash

# 1. 切换到主分支gitcheckout main# 2. 恢复stashgitstash apply

🛠 步骤5:查看stash列表

# 查看stash列表gitstash list# 删除stashgitstash drop stash@{0}

🌰 实战案例:处理紧急bug

# 1. 创建项目mkdirbug-fix-demo&&cdbug-fix-demogitinitecho"# Bug Fix Demo">README.mdgitaddREADME.mdgitcommit-m"Initial commit"# 2. 开发功能echo"Feature 1">>README.mdgitaddREADME.mdgitcommit-m"Add feature 1"# 3. 发现bug,需要紧急修复gitbranch bugfixgitcheckout bugfix# 4. 保存未完成的工作gitstash# 5. 修复bugecho"Bug fixed">>README.mdgitaddREADME.mdgitcommit-m"Fix bug"# 6. 切换回feature分支gitcheckout feature-1# 7. 恢复stashgitstash apply# 8. 继续开发echo"Feature 1 continued">>README.mdgitaddREADME.mdgitcommit-m"Continue feature 1"

❌ 常见问题避坑指南

🔴 问题1:git stash保存了未跟踪的文件

原因:默认的git stash不会保存未跟踪的文件。

解决

# 使用-u选项保存未跟踪的文件gitstash-u

🔴 问题2:stash应用后,修改的文件没有被正确恢复

原因:stash应用后,如果文件被修改,可能会发生冲突。

解决

  1. 在应用stash前,确保文件没有被修改
  2. 如果有冲突,使用git checkout --theirsgit checkout --ours解决
  3. 或者使用git stash apply --index来保留暂存区的状态

🔴 问题3:stash列表太多,难以管理

原因:多次使用stash,导致stash列表很长。

解决

  1. 定期清理stash:git stash drop stash@{n}
  2. 为stash添加描述:git stash save "message"
  3. 使用git stash list查看所有stash

🔴 问题4:stash应用后,想保留stash

原因:默认的git stash apply不会删除stash。

解决

# 保留stashgitstash apply# 如果想删除stash,使用gitstash drop

💡 Stash管理的高级用法

📌 1. 保存特定文件的更改

# 保存特定文件的更改gitstash-p

执行后,Git会逐个询问你是否要保存每个文件的更改。

📌 2. 保存带描述的stash

# 保存带描述的stashgitstash save"Add feature 1"

📌 3. 查看stash的详细信息

# 查看stash的详细信息gitstash show stash@{0}

📌 4. 将stash保存为提交

# 将stash保存为提交gitstash applygitcommit-m"Restored from stash"

🎯 今日小结

项目说明
stash是什么Git的’工作暂存区’,临时保存未提交的更改
关键命令git stashgit stash listgit stash applygit stash dropgit stash save
最佳实践1. 使用git stash save添加描述 2. 定期清理stash列表 3. 在应用stash前确保文件没有被修改
常见场景1. 切换分支前保存更改 2. 处理紧急bug 3. 临时处理其他任务

📅 明日预告:Day 43:Git的高级技巧:使用Git的rebase简化提交历史

“明天我们将深入探讨如何使用Git的rebase简化提交历史,让你的项目历史更加清晰!”


✨ 今日金句:stash不是’工作中的暂停键’,而是’工作中的加速器’。用好Git stash,让你的开发工作流从’手忙脚乱’升级到’游刃有余’!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/9 3:53:44

Day 45:Git的高级技巧:使用Git的bisect快速定位bug

Day 45:Git的高级技巧:使用Git的bisect快速定位bug“你有没有经历过这样的’崩溃时刻’:你正在测试一个功能,发现它突然’不工作’了,但你根本不知道是哪个提交导致的?你开始在一堆提交中翻来覆去&#xff…

作者头像 李华
网站建设 2026/9/2 8:12:51

眼神跟随功能有吗?Sonic当前的表情控制维度解析

Sonic当前的表情控制维度解析 在虚拟人内容创作门槛不断降低的今天,一个看似简单却频繁被问及的问题浮出水面:“这个模型能让数字人‘看’着我吗?”——换句话说,眼神跟随功能是否存在?这个问题背后,其实是…

作者头像 李华
网站建设 2026/9/5 21:11:27

【神经网络基础】-TensorFlow Serving官方的生产级模型部署

TensorFlow Serving:让AI模型走向生产的桥梁 目录 章节核心内容一、TensorFlow Serving是什么?专业定义与核心功能二、专业术语深度解析架构原理与技术细节三、部署步骤全流程详解从模型导出到服务上线四、大白话解释:它到底做什么&#xf…

作者头像 李华
网站建设 2026/9/11 0:04:15

Markdown编辑器记录Sonic项目开发日志的最佳实践

Sonic数字人生成与ComfyUI工作流实践指南 在短视频、虚拟主播和在线教育快速发展的今天,如何以低成本、高效率生成自然逼真的“会说话的数字人”视频,已成为内容创作者和技术团队共同关注的焦点。传统方案依赖3D建模、动作捕捉设备和专业动画师&#xff…

作者头像 李华
网站建设 2026/9/3 3:29:33

高帧率输出支持情况:Sonic能否生成60fps数字人视频?

Sonic能否生成60fps数字人视频? 在短视频内容爆炸式增长的今天,用户对视觉体验的要求早已从“能看”升级为“耐看”。尤其是在虚拟主播、AI客服、在线教育等实时交互场景中,一个眼神迟滞、口型错位或动作卡顿的数字人,很容易让用户…

作者头像 李华