Git Stash:临时保存和切换工作状态的利器

Git是我们日常工作中不可或缺的版本控制系统。它提供了许多强大的功能,其中之一是Git Stash(暂存)。Git Stash可以帮助我们在切换分支或保存未完成的工作时,临时保存当前的修改,以便稍后重新应用。本文将介绍Git Stash的用途、常见场景以及如何使用该功能。

Git Stash的应用

Git Stash的用途非常广泛,特别适用于以下几种常见场景:

  1. 分支切换: 当你正在进行某个分支上的开发工作,但需要紧急修复其他分支的bug或进行其他任务时,你可以使用Git Stash来保存当前分支上的修改。这样,你可以切换到其他分支,完成紧急任务后再回到原来的分支,并通过恢复Stash来重新应用你之前保存的修改。
  2. 临时保存工作状态: 有时候你可能需要中断当前的工作,但又不想提交未完成的修改。使用Git Stash可以将你的修改临时保存起来,以便稍后继续工作。这在你需要暂时切换到其他任务、参与会议或处理其他紧急问题时非常有用。
  3. 解决代码冲突: 当你在合并分支或拉取远程更新时遇到代码冲突,你可以使用Git Stash来保存当前的修改,并将工作区恢复到干净的状态。然后你可以解决冲突,再重新应用你之前保存的修改。

Git Stash的使用

下面是一些常用的Git Stash命令:

  • git stash:保存当前工作区的修改,但不保存已提交的修改;
  • git stash save "message":保存当前工作区的修改,并添加一条说明信息;
  • git stash list:列出所有储藏记录;
  • git stash apply [stash@{n}]:应用某个储藏记录,并将其从储藏列表中删除;
  • git stash pop [stash@{n}]:应用某个储藏记录,并将其从储藏列表中删除,同时恢复当前工作目录到储藏时的状态。

假设我们现在修改index.html文件,并将index.html文件git add index.html 提交到暂存区,再执行git ls-files 查看暂存区的文件结果如下图:

现在我们临时保存index.html修改状态git stash,储存记录中就会多一条记录:

当然,工作中不能这么随意,不然记录变多不便于找到自己想恢复的记录,通常使用git stash save "message"命令:

恢复保存的修改有两种常见的方法可以恢复保存的修改。一种是使用git stash apply命令,它会重新应用最新的stash,并保留stash的副本。另一种是使用git stash pop命令,它会应用最新的stash,并将其从stash列表中删除。

如果你有多个stash,你可以通过git stash apply stash@{n}命令来应用特定的stash,其中n是stash的索引号。

一旦你不再需要某个stash,你可以使用git stash drop命令将其从stash列表中删除。

增强 Git 的VS Code 扩展

我想多数人不喜欢在黑白的窗口敲命令,我们可以通过VS Code 扩展来增强使用 Git,我推荐自己常用的一个Git插件为GitLens,安装如下图:

安装后,我们就能直观地看到Git Stash所有储藏记录。

这样,添加保存临时工作状态,也就是鼠标点点的事情。

还有其他的操作功能,不过多描述,大家安装后稍微点点都能学会。

总结

Git Stash是一个强大而灵活的工具,可帮助开发人员在切换分支、保存临时工作状态和解决代码冲突时更加高效地管理修改。通过合理利用Git Stash,我们可以处理多任务开发、合并变更和处理紧急情况,从而提高工作效率并确保代码的完整性。掌握Git Stash都是一个值得推荐的技巧,它能为你的版本控制流程带来便利和灵活性。

如果我的文章对你有帮助,您的👍就是对我的最大支持^_^。

关注公粽号【凌览社】回复"666",拉您进【人类高质量前端交流群~】

更多文章链接:linglan01.cn/about

相关推荐
To_OC13 小时前
别再串行写 await 了,Promise.all 才是并行请求的正确打开方式
前端·javascript·promise
vipbic13 小时前
中后台越做越乱后,我用插件化把它救回来了
前端·vue.js
Hyyy13 小时前
Computer Use 适合做什么,不适合做什么——一次真实使用后的思考
前端
小和尚同志14 小时前
前端 AI 单元测试思考与落地
前端·人工智能·aigc
invicinble15 小时前
c端系统,其实更像一个信息展示平台
前端
李姆斯16 小时前
管理是否可以被完全量化
前端·产品经理·团队管理
戮漠summer16 小时前
Missing Semester 计算机教育中缺失的一课 Lecture 01 Shell
开发语言·后端·scala
名字还没想好☜16 小时前
Next.js 中间件实战:鉴权、重定向与 A/B 分流
开发语言·前端·javascript·中间件·react·next.js
广州灵眸科技有限公司17 小时前
瑞芯微RV1126B开发板(EASY-EAI-PI2) INI文件操作
java·前端·javascript·网络·人工智能
梦想三三17 小时前
Git与GitHub基础入门:从零开始掌握版本控制与代码托管(完整图文教程)
人工智能·git·elasticsearch·github