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

git stash 的使用

git stash 是 Git 中一个非常实用的功能,用于临时保存和恢复工作目录中尚未提交的修改。当你需要切换分支、处理紧急修复,但又不想提交当前未完成的工作时,git stash 就能派上用场。

基本用法

1. 暂存当前修改
git stash save "可选的描述信息"  # 保存当前工作区和暂存区的修改
# 或简化写法(Git 2.13+)
git stash
  • 效果:将工作区和暂存区的修改保存到栈中,并恢复工作目录到最后一次提交的状态。
2. 查看暂存列表
git stash list  # 显示所有暂存记录
# 输出示例:
# stash@{0}: WIP on master: abc1234 添加新功能
# stash@{1}: On feature: xyz5678 修复样式问题
3. 恢复暂存的修改
git stash apply       # 恢复最近一次暂存(stash@{0})
git stash apply stash@{1}  # 恢复指定暂存记录(如第2条)
  • 区别apply 恢复后保留暂存记录,pop 恢复后删除暂存记录。
4. 恢复并删除暂存记录
git stash pop         # 恢复并删除最近一次暂存
git stash pop stash@{2}  # 恢复并删除指定暂存
5. 删除暂存记录
git stash drop stash@{0}  # 删除指定暂存
git stash clear           # 删除所有暂存

进阶用法

只暂存工作区(不暂存已添加到暂存区的修改)
git stash --keep-index  # 保留暂存区的修改
只暂存部分文件
git add file1.js file2.js  # 先将需要保留的文件添加到暂存区
git stash --patch         # 交互式选择需要暂存的修改
创建分支基于暂存
git stash branch new-feature  # 从最近一次暂存创建新分支并恢复修改

常见场景

场景1:切换分支前保存工作
# 当前在 feature 分支工作,未完成但需要切换到 master
git stash       # 保存当前修改
git checkout master
# 处理完 master 后回到 feature
git checkout feature
git stash pop   # 恢复修改
场景2:紧急修复(Hotfix)
# 在开发新功能时收到紧急修复请求
git stash       # 保存当前工作
git checkout master
git checkout -b hotfix
# 修复完成并提交
git checkout master
git merge hotfix
git branch -d hotfix
# 回到开发分支
git checkout feature
git stash pop   # 继续开发

注意事项

  1. 暂存记录存储在本地仓库:不会推送到远程仓库,其他开发者无法访问。
  2. 冲突处理:如果恢复暂存时发生冲突,需要手动解决冲突。
  3. 查看暂存差异
    git stash show        # 查看最近一次暂存的摘要
    git stash show -p     # 查看完整补丁内容
    
  4. 长期保存建议:如果需要长期保留修改,建议创建分支并提交,而非依赖 stash

替代方案

  • 创建临时提交
    git commit -m "WIP: 临时提交"  # 临时提交
    git reset --soft HEAD~1       # 需要恢复时撤销提交
    

git stash 是一个高效的临时工作管理工具,掌握它能让你的 Git 工作流更加流畅。

http://www.xdnf.cn/news/9541.html

相关文章:

  • qt ubuntu 20.04 交叉编译
  • python实战:在Linux服务器上使用LibreOffice命令行批量接受Word文档的所有修订
  • MCP 与 AI 模型的用户隐私保护——如何让人工智能更懂“界限感”?
  • Python-114:字符串字符类型排序问题
  • HBO Max 中国大陆订阅与使用终极指南(2025 最新)
  • LangChain4j(17)——MCP客户端
  • 在PHP编程中包(Package)和库(Library)怎么区分?
  • 企业级AI开启落地战,得场景者得天下
  • LeeCode 94. 二叉树的中序遍历
  • YARN架构解析:大数据资源管理核心
  • 【MYSQL】mysql单表亿级数据查询优化处理
  • 2021年认证杯SPSSPRO杯数学建模D题(第二阶段)停车的策略全过程文档及程序
  • 探寻黄金奶源带,悠纯乳业打造西北乳业新标杆
  • Spring AI框架快速入门
  • day12 leetcode-hot100-20(矩阵3)
  • 【Linux】网络(上)
  • Vue开发系列——如何使用Vue
  • 图像卷积OpenCV C/C++ 核心操作
  • 【DB2】ERRORCODE=-4499, SQLSTATE=08001
  • 【C++基础知识】匿名命名空间
  • mysql prepare statement
  • 如何查询服务器的端口号
  • 数据结构 -- 树相关面试题
  • SFTP工具类实现文件上传下载_
  • 关于ios点击分享自动复制到粘贴板的问题
  • CEH Practical 实战考试真题与答案
  • C++异步通信-future学习
  • maven项目编译时复制xml到classes目录方案
  • 服务器关机
  • 实验设计与分析(第6版,Montgomery)第4章随机化区组,拉丁方, 及有关设计4.5节思考题4.18~4.19 R语言解题