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

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 工作流更加流畅。

相关文章:

  • PySpark 中使用 SQL 语句和表进行计算
  • 小程序定制开发:从需求到落地,打造企业专属数字化入口
  • Dockerfile 构建优化的方法
  • VM改MAC电脑密码(截图)
  • LiveWallpaperMacOS:让你的 Mac 桌面动起来
  • 实时数据是什么意思?如何能做到实时数据同步?
  • Linux的交换区
  • Vuer开源程序 是一个轻量级的可视化工具包,用于与动态 3D 和机器人数据进行交互。它支持 VR 和 AR,可以在移动设备上运行。
  • 谷歌浏览器Google Chrome v137.0.7151.41 中文版本版+插件 v1.11.1
  • 【GraphQL】深入解析 Apollo Client:从架构到实践的一站式 GraphQL 解决方案
  • [蓝桥杯C++ 2024 国 B ] 立定跳远(二分)
  • Java五种方法批量处理List元素全解
  • 《异常链与统一异常处理机制设计:让 Java 项目更清晰可靠》
  • 根据jvm源码剖析类加载机制
  • 可视化提示词嵌入向量在训练过程中的变化:visualize_embedding_changes
  • 图像卷积OpenCV C/C++ 核心操作
  • SQL里几种JOIN连接
  • 【已解决】windows gitbash 出现CondaError: Run ‘conda init‘ before ‘conda activate‘
  • Zsh/Bash Conda设置延迟启动,启动速度优化
  • zookeeper 操作总结
  • 网站手机网页如何做/百度宣传推广费用
  • 昆明电商网站建设/怎样策划一个营销型网站
  • 做kegg通路富集的网站/公司网站制作要多少钱
  • 网站数据分析工具/百度seo外包
  • 江西赣州网站建设/南宁百度seo优化
  • 网站建设哪个比较好/全国新闻媒体发稿平台