当前位置: 首页 > news >正文

git stash简单使用

目录

📦 核心概念:Stash 作为堆栈

🎯 针对 Stash 记录的操作

1. 创建一条新的 Stash 记录(最基本)

2. 查看现有的 Stash 列表

3. 恢复(应用)某一条特定的 Stash 记录

4. 恢复并删除某一条特定的 Stash 记录

5. 删除某一条特定的 Stash 记录

6. 查看某条 Stash 记录的具体内容

7. 从某条 Stash 记录中恢复单个文件

📋  Stash 记录操作命令总结表

💡 最佳实践与建议


   git stash 单次记录的操作是 Git 中非常实用的功能,用于临时搁置当前的工作进度。下面我将为你详细解释如何操作单条 stash 记录。

📦 核心概念:Stash 作为堆栈

        首先,git stash 的工作方式像一个堆栈 (Stack)——后进先出 (LIFO: Last In, First Out)。你每次执行 git stash(或 git stash push)都会将当前未提交的修改压入这个堆栈,形成一条记录。

🎯 针对 Stash 记录的操作

1. 创建一条新的 Stash 记录(最基本)

        这是最常用的命令,它会将当前工作目录和暂存区的修改保存为一条新的 stash 记录。

# 在项目的根目录下执行
git stash

# 等同于(较新版本的Git)
git stash push

# 推荐:添加一段描述信息,便于日后识别
git stash push -m "正在开发登录功能,临时修复紧急bug"

效果:你的工作目录会变得干净,回到上一次提交的状态。所有未提交的修改都被打包成一条 stash 记录,并放在堆栈的顶部(最新位置)。


2. 查看现有的 Stash 列表

        要操作单条记录,首先得知道有哪些记录。

# 查看 stash 堆栈的列表摘要

git stash list

# 显示更详细的信息(如具体的文件变更)

git stash list --stat

输出示例

stash@{0}: On main: 正在开发登录功能,临时修复紧急bug

stash@{1}: On main: 实验性代码,尝试新API

stash@{2}: On main: WIP on feature-branch

  • stash@{0} 是最新(最近)的记录。

  • stash@{1} 是上一次的记录,依此类推。

  • On main 表示创建 stash 时所在的分支是 main


3. 恢复(应用)某一条特定的 Stash 记录

        默认的 git stash pop 会应用最新的 stash@{0} 并删除它。如果你想应用一条特定的旧记录,并保留它:

# 应用指定的 stash 记录,但不从堆栈中删除

git stash apply stash@{1}

# 应用最新的 stash,等同于 `git stash apply stash@{0}`

git stash apply

提示apply 命令不会自动删除这条记录,它还会留在列表中。


4. 恢复并删除某一条特定的 Stash 记录

        如果你想应用一条记录并立即从堆栈中移除它:

# 弹出并应用指定的 stash 记录,然后删除它

git stash pop stash@{1}

# 弹出并应用最新的 stash(最常用)

git stash pop


5. 删除某一条特定的 Stash 记录

        如果你觉得某条 stash 记录没用了,想直接丢弃它,而不应用它的修改:

# 删除指定的 stash 记录

git stash drop stash@{1}

# 删除最新的 stash 记录

git stash drop


6. 查看某条 Stash 记录的具体内容

        在决定应用或删除前,你可以先看看这条 stash 里到底改了些什么。

# 显示 stash 记录的差异(具体改了哪些代码)

git stash show stash@{1}

# 显示更详细的差异(git diff 格式)

git stash show -p stash@{1}

提示:显示不全可以点击回车继续显示,或者按q退出


7. 从某条 Stash 记录中恢复单个文件

        这是一个高级但非常有用的技巧!你不需要恢复整个 stash,可以只取出其中一个文件。

# 1. 先使用 `git stash show -p` 查看你想恢复的文件路径

git stash show -p stash@{1} -- path/to/file.js

# 2. 使用 `git checkout` 从特定的 stash 中检出那个文件

git checkout stash@{1} -- path/to/file.js

# 或者使用 `git restore` (较新版本的Git)

git restore --source stash@{1} -- path/to/file.js

效果:只有 path/to/file.js 这个文件的修改会被恢复到你的工作目录,其他文件的修改仍保留在 stash 中。

📋  Stash 记录操作命令总结表

你想做的事命令说明
创建一条新记录git stash push -m "描述"保存当前工作,附带描述信息
查看记录列表git stash list查看所有 stash 记录
查看某条内容git stash show -p stash@{n}显示某条记录的详细代码差异
应用一条记录git stash apply stash@{n}恢复该记录,但不删除
应用并删除git stash pop stash@{n}恢复该记录,并删除
删除一条记录git stash drop stash@{n}直接丢弃,不恢复
恢复单个文件git checkout stash@{n} -- <file>只从记录中恢复一个文件

💡 最佳实践与建议

  1. 务必加描述 (-m)git stash push -m "描述性信息" 能让你在几天后还能记起这条 stash 是干什么的。

  2. 分支关联性: stash 记录并不绑定到特定分支。你可以在分支 A 创建 stash,然后切换到分支 B 再 apply 它。这非常有用,但也可能导致冲突。

  3. 清理旧记录: 定期使用 git stash list 检查并 git stash drop 掉那些不再需要的旧记录,保持堆栈整洁。

  4. 替代方案: 对于复杂的、需要长期搁置的工作,创建一个临时分支 (git checkout -b temp-branch) 并进行一次提交,可能是比 stash 更清晰的管理方式。

掌握这些针对单条 stash 记录的操作,能让你更加灵活和高效地管理正在进行中的工作。

http://www.dtcms.com/a/350728.html

相关文章:

  • 【ACP】2025-最新-疑难题解析-6
  • 评估单基因对肿瘤免疫微环境(TIME)的影响,并分析与显著相关免疫细胞的相关性
  • 【记录】Windows|Windows配置防火墙使某个应用禁止联网
  • ffmpeg测试rtsp地址
  • Ansible自动化运维:原理以及安装教程
  • 毕业项目推荐:04-基于yolov8/yolov5/yolo11的鸟类检测识别系统(Python+卷积神经网络)
  • 【数据可视化-99】2025 年各地区夏粮产量可视化分析:Python + pyecharts打造炫酷暗黑主题大屏
  • 磁盘损坏导致无法开机怎么办?
  • 2. 并发解决架构图
  • kanass V1.1.6版本发布,支持OpenApi便于与外部系统更好的集成
  • 【Linux】timerfd定时器
  • MCP技术详解:探秘模型上下文协议的工作机制与应用
  • 并行多核体系结构基础——概述(笔记)
  • 管理型交换机与非管理型交换机的优缺点对比
  • Coze用户账号设置修改用户昵称-前端源码
  • JavaScript数据表格方案AG Grid主题定制新升级:Figma 设计系统全面打通设计与开发
  • 舰船摇摆下的坐标变换技术
  • coze工作流200+源码,涵盖AI文案生成、图像处理、视频生成、自动化脚本等多个领域
  • Metabase 部署与实践:从测试环境到生产环境的完整指南
  • celery prefetch-multiplier
  • 【人工智能】人工智能在企业中的应用
  • 理解Vuex的辅助函数,分析mapState、mapGetters、mapMutations和mapActions各个应用场景
  • [信号与系统个人笔记]第二章 连续时间信号与系统的时域分析
  • 【MySQL】MySQL介绍及安装
  • 查看mariadb服务是否启动
  • 2025 BrunnerCTF remobile 部分wp
  • 编译型语言(C/C++):从源码到.exe 的完整链路
  • 语音识别:概念与接口
  • LeetCode 面试经典 150_双指针_验证回文串(25_125_C++_简单)(双指针)
  • 【JVM内存结构系列】六、“特殊区域”:直接内存、栈上分配与TLAB