【技巧】git stash用的好,切换分支随便搞

前言

🍊缘由

git stash不会搞,走到哪里都拉倒

🏀事情起因:

大家好,我是JavaDog程序狗

最近翻看公众号评论时,发现文章【规范】Git分支管理,看看我司是咋整的小伙伴的多条回复:

本狗在回复留言时,发现小伙伴对于切换分支有所疑惑:

本地代码要是修改且未提交,切换分支时本地修改内容咋办

遇到这种问题的小伙伴一定是没有用好git stash,本狗以自我使用角度,解析下git stash的基本用法


🎯主要目标

实现3大重点

1. git stash 是什么
2. git stash 相关使用指令
3. 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 会做以下几件事

  1. 保存修改:Git 会保存工作目录中所有未提交的修改,无论是已暂存的还是未暂存的更改。

  2. 清理工作目录:Git 会将你的工作目录恢复到最近一次提交的状态,清除所有未提交的更改

  3. 压入栈中:保存的更改会被放到一个称为"stash"的特殊存储区域,这个区域实际上是一个类似于堆栈的数据结构,稍后从这里恢复你的工作。


二. git stash 相关使用指令

1.使用 git stash 来暂时存储当前的修改
shell 复制代码
git stash
2.使用 git stash save "message" 来暂时存储当前的修改,并附上一个备注信息
shell 复制代码
git stash save "v2.1.1订单需求代码"
3.使用 git stash list 来查看当前所有的stash
shell 复制代码
git stash list
4.使用 git stash apply 来应用最新的stash
shell 复制代码
# 应用最新的stash
git stash apply

# 通过git stash list查询后,获取应用指定的stash引用
git stash apply stash@{2}
5.使用 git stash drop 来删除最新的stash
shell 复制代码
# 删除最新的stash
git stash drop

# 通过git stash list 查询后,删除指定的stash引用
git stash drop stash@{2}
6.使用 git stash pop 来应用最新的stash并且删除
shell 复制代码
# 通过git stash list 查询后,应用最新的stash并删除
git stash pop
7.使用 git stash clear 来清空所有的stash
shell 复制代码
# 清空所有的stash
git stash clear
8.使用 git stash show 来查看最新stash的内容
shell 复制代码
# 查看最新stash的内容
git stash show   
9.使用 git stash branch 新分支,从最新的stash创建一个新的分支并应用该stash
shell 复制代码
# 创建一个新的分支并应用最新的stash
git stash branch new_feature  

三. git stash 使用实操

🌰实例

当前分支feature-javadog-v2.1.1-SNAPSHOT-20240703正在开发写了一半,突然线上有紧急bug,需要切出bug分支进行修改问题,咋办?

目前存在的问题是,现在分支开发还没有写完,没法提交,如果切换分支本地代码就会丢失,所以就需要使用git stash命令

1.在开发分支使用git stash save "message" 暂存写了一半代码
shell 复制代码
git stash save "v2.1.1订单需求代码"
2.修改完bug后切换回当前开发分支,使用git stash list查看暂存记录
shell 复制代码
git stash list
3.使用git stash apply stash引用号,进行恢复暂存数据
shell 复制代码
git stash apply 0
4.使用git stash drop stash引用号,进行暂存数据清理
shell 复制代码
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。

🍈猜你想问

如何与狗哥联系进行探讨

关注公众号【JavaDog程序狗】

公众号回复【入群】或者【加入】,便可成为【程序员学习交流摸鱼群】的一员,问题随便问,牛逼随便吹,目前群内已有超过280+个小伙伴啦!!!

2.踩踩狗哥博客

javadog.net

里面有狗哥的私密联系方式呦 😘

大家可以在里面留言,随意发挥,有问必答


🍯猜你喜欢

文章推荐

【工具】珍藏免费宝藏工具,不好用你来捶我

【插件】IDEA这款插件,爱到无法自拔

【规范】看看人家Git提交描述,那叫一个规矩

【工具】用nvm管理nodejs版本切换,真香!

【项目实战】SpringBoot+uniapp+uview2打造H5+小程序+APP入门学习的聊天小项目

【项目实战】SpringBoot+uniapp+uview2打造一个企业黑红名单吐槽小程序

【模块分层】还不会SpringBoot项目模块分层?来这手把手教你!

【ChatGPT】SpringBoot+uniapp+uview2对接OpenAI,带你开发玩转ChatGPT

相关推荐
神仙别闹2 小时前
基于C#实现的(WinForm)模拟操作系统文件管理系统
java·git·ffmpeg
刘大辉在路上11 小时前
突发!!!GitLab停止为中国大陆、港澳地区提供服务,60天内需迁移账号否则将被删除
git·后端·gitlab·版本管理·源代码管理
落落鱼201321 小时前
cenos如何升级git到2以上版本
git
Domain-zhuo21 小时前
Git常用命令
前端·git·gitee·github·gitea·gitcode
sin220121 小时前
git自己模拟多人协作
git
大猫和小黄1 天前
Windows、CentOS环境下搭建自己的版本管理资料库:GitBlit
linux·服务器·windows·git
孤水寒月1 天前
Git忽略文件.gitignore
git·elasticsearch
DN金猿1 天前
git命令恢复/还原某个文件、删除远程仓库中的文件
git
DWei_GaGa2 天前
Git:查看分支、创建分支、合并分支
git
涵信2 天前
Windows11 安装 Ubuntu-20.04,同时安装配置 zsh shell,配置 git 别名(alias),大大提高开发效率
linux·git·ubuntu·bash