news 2026/4/16 13:26:24

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/4/13 15:23:18

Day 48:Git的高级技巧:使用Git的worktree多工作区管理

Day 48:Git的高级技巧:使用Git的worktree多工作区管理“你有没有经历过这样的’崩溃时刻’:你正在处理一个紧急bug,但需要同时查看另一个分支的代码,结果不得不在两个终端窗口之间疯狂切换,像在玩’俄罗斯方…

作者头像 李华
网站建设 2026/4/14 6:20:19

如何贡献代码回社区?参与Sonic项目的正确方式

如何参与Sonic项目:从使用者到贡献者的进阶之路 在虚拟内容爆发式增长的今天,一个普通人也能拥有“数字分身”已不再是科幻。无论是短视频平台上的AI主播,还是企业培训中的虚拟讲师,背后都离不开一项关键技术——音频驱动人脸动画…

作者头像 李华
网站建设 2026/4/14 9:18:40

腾讯联合浙大推出Sonic数字人口型同步技术,支持音频+图片快速生成视频

腾讯联合浙大推出Sonic数字人口型同步技术,支持音频图片快速生成视频 在短视频内容爆炸式增长的今天,一个创作者每天要面对的问题不只是“拍什么”,而是“怎么高效地拍”。尤其当品牌需要持续输出高质量口播视频、教育机构希望批量制作名师课…

作者头像 李华
网站建设 2026/4/14 9:10:02

PHP记录 IP/UA,每次请求验证的庖丁解牛

**PHP 通过记录用户 IP 和 User-Agent **(UA) 是防御 Session 劫持(Session Hijacking) 的关键手段。 其核心思想是:Session ID 不应是唯一身份凭证,而需与用户上下文(IP UA)。 若攻击者窃取 Session ID&a…

作者头像 李华
网站建设 2026/4/12 21:53:15

Sonic数字人生成过程中如何保护肖像权?

Sonic数字人生成过程中如何保护肖像权? 在虚拟主播24小时不间断带货、AI客服精准复刻真人语气的今天,一张照片加一段录音就能“复活”一个人——这不再是科幻情节,而是每天都在发生的现实。腾讯与浙江大学联合研发的Sonic模型,正是…

作者头像 李华