网站优化

网站优化

Products

当前位置:首页 > 网站优化 >

如何巧妙使用git stash,轻松切换分支代码?

GG网络技术分享 2026-04-16 22:13 1


大家好, 我是JavaDog程序狗,今天心情不太好,主要原因是代码又写崩了

哎,说真的,做程序员这行,天天跟代码打交道,有时候真的想砸键盘。最近翻看公众号评论时 发现文章Git分支管理,看看我司是咋整的,底下好多小伙伴都在吐槽,说切换分支简直是噩梦。本狗在回复留言时 发现小伙伴对于切换分支有所疑惑,特别是那种写到一半突然要改Bug的情况,简直让人抓狂。

你们有没有遇到过这种事儿?正写着代码呢,写得兴高采烈的,突然产品经理或者老板冲过来说线上有紧急Bug,必须马上修,马上!这时候你一看, 自己当前的分支 feature-javadog-v2.1.1-SNAPSHOT-20240703 还是一堆乱七八糟的修改,根本没法提交。如果直接切换分支吧,Git会报错,提示你有未提交的更改;如果不切换吧,老板的怒火你承受不住。咋办?是不是想死的心都有了?

git stash用的好,切换分支随便搞

遇到这种问题的小伙伴一定是没有用好 git stash。本狗以自我使用角度, 解析下git stash的基本用法,虽然网上教程一堆,但我还是要写,主要原因是我的理解才是最“人话”的,优化一下。!

👽人话情景解释 git stash :这玩意儿到底是个啥?

官方解释那是给机器看的,咱们得说人话。git stash 是 Git 版本控制系统中的一个非常实用的命令,git stash 允许“临时存放”工作区和暂存区中的所有修改。 得了吧... 听着挺绕口吧?没关系,我给你打个比方,你就懂了。

想象一下本狗在厨房里忙着做黑暗料理,突然 这样, git stash 就像是一个临时的“暂停键”,帮助你管理你的工作流程,保持代码的整洁,一边保证你的工作进度不会丢失。是不是很神奇?是不是觉得Git开发者简直是个天才?虽然有时候我也想骂娘,但这个功能确实好用。 🏀事情起因:本地代码要是修改且未提交,切换分支时本地修改内容咋办 回到刚才那个惨烈的场景。当前分支 feature-javadog-v2.1.1-SNAPSHOT-20240703 正在开发写了一半, 突然线上有紧急bug,需要切出bug分支进行修改问题,咋办?目前存在的问题是 现在分支开发还没有写完,没法提交,如果切换分支本地代码就会丢失,所以就需要使用 git stash 命令。 在 Git 中, 当你正在修改代码,但突然需要切换去做另一件事情,比如修复一个紧急的 Bug,或者帮助同事解决一个问题, 看好你哦! 你不想丢失你当前的修改,也不想把这些未完成的修改混进新的工作中去。这时候,git stash 就派上了用场。 你只需要运行 git stash, Git 就会帮你把所有未提交的修改都“打包”起来放到一个平安的地方,然后让你的工作区变得干净,就像你刚从仓库检出代码一样。这时候, 你就可以欢天喜地地去切换分支修Bug了不用担心代码冲突,也不用担心把半成品代码提交上去被骂。 🌰实例:实际操作用的基础命令, 其余命令使用均可参考上述相关使用指令 好了废话不多说咱们直接上干货。以下实际例子出发,展示实际操作用的基础命令。大家看好了别眨眼,每一个字符都很重要。 先说说最基础的命令,就是保存当前的修改。这个命令就像是你把厨房的垃圾扫进柜子里的动作。 git stash 使用 git stash 命令时 Git 会做以下几件事:它会把你的工作区和暂存区的所有修改,都存到一个栈里。然后你的工作区就干净了干干净净,清清白白。 但是有时候你存的东西多了你自己都忘了存了啥。这时候,你需要看看你的“收纳柜”里都有啥。可以用这个命令: git stash list 这个命令会列出所有已保存的 stash。你会看到类似 stash@{0}: WIP on branch-xxx: xxxxx 这样的列表。这里的 stash@{0} 就是引用,就像每个收纳盒上的标签一样。 如果你想看看最新的那个stash里到底改了啥文件, 不用恢复出来看,直接用这个: # 查看最新stash的内容 git stash show 这时候,等你忙完手头的事情,回到原来的工作,你只需运行 git stash pop 或者 git stash apply你之前的工作就会被“解包”,恢复到你离开时的状态,你可以接着做原来的工作了。这两个命令有啥区别呢?别急,听我慢慢说。 git stash apply stash_ref 是应用指定的 stash,保留原 stash。也就是说你把东西从柜子里拿出来用了但是柜子里还有一份备份。而 git stash pop 则是应用并删除指定的 stash,默认为最新的 stash。这个就像是把东西拿出来用,然后把柜子里的备份给扔了。 # 应用最新的stash git stash apply # 通过git stash list查询后 获取应用指定的stash引用 git stash apply stash@{2} # 通过git stash list 查询后应用最新的stash并删除 git stash pop 探探路。 看到没,就是这么简单。但是人嘛,总会犯错。有时候你存了一个stash,后来发现这玩意儿是垃圾,根本不需要了留着占地方。这时候你就需要删除它。 删除最新的stash: git stash drop 或者, 通过 git stash list 查询后删除指定的stash引用: git stash drop stash@{2} 甚至,你心情不好,想把柜子清空,一个不留,那就用这个核弹级别的命令: # 清空所有的stash git stash clear 慎用 git stash clear 啊,千万别手抖,不然哭都没地方哭去。 进阶玩法:给Stash起个名字, 甚至直接开个分支 有时候,你存的stash多了stash@{0}stash@{1} 这种名字根本记不住哪个是哪个。这时候,你可以给stash起个名字,就像给收纳盒贴个详细的标签。 虽然现在 git stash 默认也能带消息,但用 git stash save 更明确一点。 git stash save "v2.1.1订单需求代码" 这样, 你以后 git stash list 的时候,就能看到“v2.1.1订单需求代码”这几个字,一眼就知道这是啥了是不是很方便? 还有更高级的。有时候,你存了一个stash,后来你想,这代码其实挺重要的,不如直接开个分支把它存起来吧。这时候,git stash branch 就闪亮登场了。 git stash branch branch_name创建新分支并应用最新的 stash。这个命令会干这么一件事:它基于你stash那个节点的commit, 另起炉灶。 新建一个分支,然后把stash的内容应用到这个分支上,再说说把那个stash删掉。是不是一气呵成? # 创建一个新的分支并应用最新的stash git stash branch new_feature 这个功能特别适合那种“本来想修个小bug,后来啊改着改着变成了一个大功能”的情况。直接stash branch,完美过渡。 程序员装备推荐:工欲善其事必先利其器 说了这么多Git命令, 其实写代码这事儿,除了脑子要好使,装备也很重要。你想想,如果键盘不好用,按一下卡一下心情能好吗?心情不好,代码能写好吗?代码写不好,Bug能不多吗?Bug多了老板能不骂吗?所以选一把好键盘,也是为了保住饭碗。 下面我给大家推荐几款咱们程序员常用的键盘, 别问我为什么选这几款,问就是手感好,问就是看着顺眼。 排名 键盘型号 轴体类型 连接方式 参考价格 推荐指数 1 Keychron K2 红轴/茶轴/青轴 蓝牙/有线 498 ⭐⭐⭐⭐⭐ 2 罗技 MX Keys 剪刀脚结构 蓝牙/优联 899 ⭐⭐⭐⭐ 3 Filco Streak 87 Cherry MX轴 有线 1099 ⭐⭐⭐⭐⭐ 4 IKBC C87 Cherry MX轴 有线 399 ⭐⭐⭐⭐ 5 Razer BlackWidow V3 绿轴/黄轴 有线/无线 1299 ⭐⭐⭐ 看看这表格,是不是很专业?Keychron K2那是性价比之王,Mac和Windows通吃,简直是跨平台开发者的福音。罗技MX Keys嘛,主打一个静音和稳,适合在办公室里装深沉。Filco那就是大F,手感没得说就是贵。IKBC也是老牌子了皮实耐造。雷蛇那个,灯效酷炫,适合喜欢光污染的极客。 别再让代码乱飞了 总而言之, 言而 git stash 是 Git 提供的一个功能,用于临时存储当前工作目录和暂存区中所有未提交的更改。当你需要切换分支或进行其他操作, 而又不想丢失当前正在进行的工作时git stash 可以帮助你将这些更改“打包”并保存起来以便之后可以恢复到之前的工作状态。 大家一定要养成好习惯,别总是想着“我就改一行代码,不会出事的”。墨菲定律告诉我们,凡是可能出错的事,必定会出错。当你急着切换分支去修Bug的时候,往往就是你当前代码最乱的时候。这时候,一个 git stash 就能救你一命。 希望这篇文章能帮到那些还在为切换分支发愁的小伙伴们。虽然我写得很乱, 很情绪化,甚至有点啰嗦,但核心思想就一个:用好 git stash保平安。好了 不说了我的女神又打,给力。


提交需求或反馈

Demand feedback