0. 介绍

  • 教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步 原文地址
  • 有空就来看看个人技术小站, 我一直都在

在实际项目开发中,总会遇到代码写到一半(没法去打commit),去开启新的分支 修复Bug 或者 增加功能 的情况。如果不处理,未修改的代码就会被带入临时创建的新的分支,没写完的代码 和 要修复的代码混合在一起,绝对苦逼。而Git中的stash就是用来对付这种情况。

1. 初识git stash

stash在英文中的意思是:隐藏。在Git代码管理的过程中,它的作用也是隐藏没完成的代码,防止它干扰 别人 或者 新分支的工作。

关于git stash,常用命令如下:

命令 作用
git stash 隐藏当前的工作现场, 此时, git status的结果是 clean
git stash list 查看所有隐藏, 每一行的冒号前面的字符串就是标识此隐藏的id
git stash apply <id> 重新显示标识为id的隐藏
git stash drop <id> git apply恢复隐藏后, 需要手动删除list列表中的记录

2. 应用与实战

假设:正当我在 master 分支上写着文档时候(没有完成、没有提交),同事发现 hello.py 这个脚本有问题,紧急报告给我进行修复。

收到报告,下意识就是开一个 debug 分支来处理bug。但是,现在的文档没完成,自然无法提交,又不能把没提交的东西带入到新创建的 debug 分支(执意如此,我也没办法 : ))。目前,status 如下:

为了达到目的,分为以下几步:

  1. 隐藏修改:git stash :
  2. 创建新分支:git branch debug :
  3. debug分支上修复bug, 并且将修改添加到log中 :
  4. 回到master分支, 合并debug分支的修改, 并且删除 debug 分支 :
  5. 重新显示隐藏的stash,并且将其从stash list列表中删除 :
  6. 然后就可以愉快地继续做自己的事情啦!

3. 拓展阅读

在实际生产过程中,难免会遇到多个 stash 的情况。此时,他们的id默认都是:stash{0}, stash{1}, stash{2} ... ...

当我们恢复一个 stash ,并且将它从 stash list 中移除的时候,在其下方的 stash 记录的id会自动变小,以保证id是从0到n的连续自然数列。所以,当从 stash list 移除一个 stash 后,一些 stash 的 id 就会发生改变。此处是个坑。

Git实战手册(三): stash解惑与妙用相关推荐

  1. 《Puppet实战手册》——1.4 利用Git管理配置清单

    本节书摘来自异步社区<Puppet实战手册>一书中的第1章,第1.4节,作者:[英]John Arundel著,更多章节内容可以访问云栖社区"异步社区"公众号查看 1. ...

  2. 从蚂蚁金服裸辞,京东三面遭调优猛击,闭关俩月啃完653页性能调优实战手册,拿到京东offer

    性能优化是很多 Java 程序员希望彻底掌握的一门技能.很多人都想学好性能优化,希望能够在自己的工作中灵活运用提高性能,从而为用户提供良好的用户体验.然而,很多人在设计技术方案或者编码时缺乏系统地.方 ...

  3. Git操作手册|命令速查表

    Git操作手册|命令速查表 这篇文章主要介绍Git分布式版本管理与集中式管理的一些差异,总结下Git常用命令作为日后的速查表,最后介绍Git进阶的一些案例. 本文分为以下几个部分: Git与SVN差异 ...

  4. git学习(三)分支管理

    分支管理 git学习参考 廖雪峰官方网站 git基本操作,一篇文章就够了! 一.分支作用 分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交 ...

  5. DDR4实战教学(三):特性与电气参数

    微信搜索[每日硬知识],关注本公众号.网站访问链接:http://www.firesu.net. 好久未更,后续将陆续收尾DDR4博文系列.为大家带来DDR4的特性,DDR4的重要信号描述,DDR4的 ...

  6. apollo在liunx环境实战(三)

    1. apollo在liunx环境实战(三) 1.1. 准备 下载apollo源码 https://github.com/ctripcorp/apollo 1.2. 创建数据库 在自己的liunx环境 ...

  7. 英特尔AI医疗实战手册曝光:医生诊断提速10倍,推理时间减少85%

    乾明 李根 发自 凹非寺 量子位 报道 | 公众号 QbitAI AI正在变革(中国)医疗. 最近,一份实战手册刚刚披露,清晰勾勒出了AI如何重塑着医疗行业的各个方面. 而且这份手册展示的不光有趋势分 ...

  8. 用Zebra 在Linux 上构建路由器实战手册

    用Zebra 在Linux 上构建路由器实战手册 一.Zebra 介绍 Zebra 是一个 TPC/IP 路由软件,支持 BGP-4.BGP-4+.OSPFv2. OSPFv3.RIPv1.RIPv2 ...

  9. 开放下载!《OSS运维基础实战手册》

    作为一名云运维工程师,在攻克OSS的道路上难免会遇到"天花板".放轻松,<OSS运维基础实战手册>帮你轻松解决!本书透彻解析OSS核心概念,十二心法打开全新运维视角,力 ...

最新文章

  1. mac上安装dart环境
  2. C指针原理(39)-GLIB
  3. 【数据分析+建模案例】基于所给数据集对饭店流量指标进行预测
  4. BZOJ 2820: YY的GCD
  5. 【java基础】重载与重写
  6. 保存为文件_OC如何保存为带通道易抠图文件?oc如何渲染对象蒙版?
  7. 杭州户籍人口去年净增加21.3万人,接近800万人
  8. 非线性微分方程 matlab,用ODE45求解Matlab中微分方程的非线性系统
  9. Vue 自定义项目的创建以及配置
  10. 计算机打印机图标删除吗,故障之:打印图标消失及打印任务无法取消
  11. win10麦克风直接输出声音_win10系统音频前后同时有声音输出的技巧
  12. IAR修改工程名流程
  13. 7-6 愤怒的牛 (25 分)
  14. 3分钟掌握自给IP地址
  15. [Python]线程实例化;互斥锁;线程间通信
  16. PyCharm中配置SVN
  17. 文件服务器搭建 xp,xp搭建文件服务器
  18. Scheme 语言开发工具DrRacket下载,安装
  19. excel表中怎么插入visio_怎样在visio中插入表格
  20. Scrapy框架下载图片(站酷网下载图片)

热门文章

  1. Java集合Set、Map、HashSet、HashMap、TreeSet、TreeMap等
  2. android 自己定义标签的使用,实现扁平化UI设计
  3. 解决:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
  4. Oracle学习 第26天 Toad试用感受
  5. PHP——0128练习相关2——js点击button按钮跳转到另一个新页面
  6. jQuery插件写法
  7. 大数据之-Hadoop_大数据技术生态体系---大数据之hadoop工作笔记0014
  8. ES6新特性_Promise封装读取文件---JavaScript_ECMAScript_ES6-ES11新特性工作笔记025
  9. Netty工作笔记0046---TaskQueue自定义任务
  10. linux下如何添加一个用户并且让用户获得root权限