前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【技巧】git stash用的好,切换分支随便搞

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

原创
作者头像
JavaDog程序狗
发布2024-09-26 08:24:31
4010
发布2024-09-26 08:24:31

前言

🍊缘由

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。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • 🍊缘由
      • git stash不会搞,走到哪里都拉倒
    • 🎯主要目标
      • 实现3大重点
  • 正文
    • 🥦目标分析
      • 一. git stash 是什么
      • 二. git stash 相关使用指令
      • 三. git stash 使用实操
  • 总结
    • git stash 相关使用指令
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档