前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >stash解惑与妙用

stash解惑与妙用

作者头像
心谭博客
发布2020-04-20 15:52:46
5910
发布2020-04-20 15:52:46
举报
文章被收录于专栏:YuanXin

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

1. 初识git stash

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

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

命令

作用

git stash

隐藏当前的工作现场, 此时, git status的结果是 clean

git stash list

查看所有隐藏, 每一行的冒号前面的字符串就是标识此隐藏的id

git stash apply

重新显示标识为 id 的隐藏

git stash drop

git apply恢复隐藏后, 需要手动删除 list 列表中的记录

git stash pop

Apply last stash and remove it from the list

2. 应用与实战

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

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

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

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

感谢chucklu的提醒:上面第五步的两条命令,可以用git stash pop命令代替。

3. 拓展阅读

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-09-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 初识git stash
  • 2. 应用与实战
  • 3. 拓展阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档