Git stash使用教程:临时存储未提交代码,轻松切换分支
Git stash使用教程:临时存储未提交代码,轻松切换分支
Git stash是Git版本控制系统中的一个非常实用的命令,它允许你"临时存放"工作区和暂存区中的所有修改,这样你就可以干净地切换到另一个分支去处理其他任务,而不用担心当前的工作进度会被覆盖或丢失。本文将从基础概念到具体操作,手把手教你掌握Git stash的使用方法。
前言
缘由
git stash不会搞,走到哪里都拉倒
事情起因:
最近翻看评论时,发现小伙伴对于切换分支有所疑惑:本地代码要是修改且未提交,切换分支时本地修改内容咋办。遇到这种问题的小伙伴一定是没有用好git stash,本狗以自我使用角度,解析下git stash的基本用法。
主要目标
实现3大重点
- git stash 是什么
- git stash 相关使用指令
- git stash 使用实操
正文
目标分析
一. git stash 是什么
git stash是 Git 版本控制系统中的一个非常实用的命令
git stash 允许“临时存放”工作区和暂存区中的所有修改,这样你就可以干净地切换到另一个分支去处理其他任务,而不用担心当前的工作进度会被覆盖或丢失。
情景解释 git stash :
本狗在厨房里忙着做黑暗料理,突然电话响了,是女神说他马上就到。这时候,我不能让女神看到厨房乱七八糟,也不能让半成品的食物和满地垃圾放着不管,那咋办呢?
git stash 就像是我的收纳柜,女神来了,我迅速把所有切好的食材、满地垃圾,收拾整齐,全放置于收纳柜,这样厨房看起来干净整洁,而且送走女神后还能接着做黑料接着舞,不会丢失任何东西,哪怕是一个垃圾。
等你忙完手头的事情,回到原来的工作,你只需运行git stash pop 或者 git stash apply,你之前的工作就会被“解包”,恢复到你离开时的状态,你可以接着做原来的工作了。
在 Git 中,当你正在修改代码,但突然需要切换去做另一件事情,比如修复一个紧急的 Bug,或者帮助同事解决一个问题,你不想丢失你当前的修改,也不想把这些未完成的修改混进新的工作中去。这时候,git stash 就派上了用场。
你只需要运行 git stash,Git 就会帮你把所有未提交的修改都“打包”起来,放到一个安全的地方(我们称之为 stash),然后让你的工作区变得干净,就像你刚从仓库检出代码一样。
这样,git stash 就像是一个临时的“暂停键”,帮助你管理你的工作流程,保持代码的整洁,同时保证你的工作进度不会丢失。
使用 git stash 命令时,Git 会做以下几件事:
- 保存修改:Git 会保存工作目录中所有未提交的修改,无论是已暂存的还是未暂存的更改。
- 清理工作目录:Git 会将你的工作目录恢复到最近一次提交的状态,清除所有未提交的更改。
- 压入栈中:保存的更改会被放到一个称为“stash”的特殊存储区域,这个区域实际上是一个类似于堆栈的数据结构,稍后从这里恢复你的工作。
二. git stash 相关使用指令
- 使用 git stash 来暂时存储当前的修改
git stash
- 使用 git stash save "message" 来暂时存储当前的修改,并附上一个备注信息
git stash save "v2.1.1订单需求代码"
- 使用 git stash list 来查看当前所有的stash
git stash list
- 使用 git stash apply 来应用最新的stash
# 应用最新的stash
git stash apply
# 通过git stash list查询后,获取应用指定的stash引用
git stash apply stash@{2}
- 使用 git stash drop 来删除最新的stash
# 删除最新的stash
git stash drop
# 通过git stash list 查询后,删除指定的stash引用
git stash drop stash@{2}
- 使用 git stash pop 来应用最新的stash并且删除
# 通过git stash list 查询后,应用最新的stash并删除
git stash pop
- 使用 git stash clear 来清空所有的stash
# 清空所有的stash
git stash clear
- 使用 git stash show 来查看最新stash的内容
# 查看最新stash的内容
git stash show
- 使用 git stash branch 新分支,从最新的stash创建一个新的分支并应用该stash
# 创建一个新的分支并应用最新的stash
git stash branch new_feature
三. git stash 使用实操
实例
当前分支feature-javadog-v2.1.1-SNAPSHOT-20240703正在开发写了一半,突然线上有紧急bug,需要切出bug分支进行修改问题,咋办?
目前存在的问题是,现在分支开发还没有写完,没法提交,如果切换分支本地代码就会丢失,所以就需要使用git stash命令
- 在开发分支使用git stash save "message" 暂存写了一半代码
git stash save "v2.1.1订单需求代码"
- 修改完bug后切换回当前开发分支,使用git stash list查看暂存记录
git stash list
- 使用git stash apply stash引用号,进行恢复暂存数据
git stash apply 0
- 使用git stash drop stash引用号,进行暂存数据清理
git stash drop 0
以上实际例子出发,展示实际操作用的基础命令,其余命令使用均可参考上述相关使用指令
总结
git stash是 Git 提供的一个功能,用于临时存储当前工作目录和暂存区中所有未提交的更改。当你需要切换分支或进行其他操作,而又不想丢失当前正在进行的工作时,git stash 可以帮助你将这些更改“打包”并保存起来,以便之后可以恢复到之前的工作状态。
git stash 相关使用指令
git stash: 保存当前所有未提交的更改。
git stash save "message": 同上,但可以添加一条信息来描述此次 stash 的内容。
git stash list: 列出所有已保存的 stash。
git stash apply [stash_ref]: 应用指定的 stash,保留原 stash。
git stash pop [stash_ref]: 应用并删除指定的 stash,默认为最新的 stash。
git stash drop [stash_ref]: 删除指定的 stash。
git stash clear: 删除所有 stash。
git stash show: 显示最新的 stash 的内容。
git stash branch [branch_name]: 创建新分支并应用最新的 stash。