实战:开发中临时加塞了紧急任务怎么处理?-2021.12.13

目录

实验环境

win10
git version 2.17.0.windows.1

实验软件

1、实验目的

假如说,你正在写代码,工作区有正在编辑的代码,有已经add到暂存区的代码,此时,线上业务出现问题了,此时需要你紧急回退到历史的某个分支去修复bug,但你又不想把当前内容给丢失掉,也不想提交一个不完整的项目,你该怎么办呢?

此时我们可以使用一个stash命令

案例:

image-20211213140602646

案例:
image-20211213141234475

2、配置方法

🍀 查看下当前环境

$ git diff #默认情况`git diff`命令会把工作区和暂存区所有的文件进行对比
$ gs

刚好满足工作区和暂存区下都有新操作过的文件:

image-20211213065739612

🍀 执行git stash命令

hg@LAPTOP-G8TUFE0T MINGW64 /d/IT/01 IT/github_repo/01 极客时间:git学习测试库/git_learning (temp)
$ git stash
Saved working directory and index state WIP on temp: 30c1501 Add test

执行完成后,我们查看下当前环境
hg@LAPTOP-G8TUFE0T MINGW64 /d/IT/01 IT/github_repo/01 极客时间:git学习测试库/git_learning (temp)
$ gs
On branch temp
nothing to commit, working tree clean
可以看到,当前git的工作区是干净的。

🍀 Bug修复后,现在想回退到刚才写代码的那个环境,该怎么办呢?–>应该执行如下回退命令。

$ git stash apply
或者
$ git stash pop
执行上面2条命令都可以的, apply代表会回退以后,stash堆栈/对账会存在记录。但pop不会保存。

下来,我们看下效果。
1、使用git stash apply回退

image-20211213071333202

可以看到,已经成功回退了。

我们再使用git stash list查看下当前stash堆栈里是否会保留记录?
hg@LAPTOP-G8TUFE0T MINGW64 /d/IT/01 IT/github_repo/01 极客时间:git学习测试库/git_learning (temp)
$ git stash list
stash@{0}: WIP on temp: 30c1501 Add test
可以看到,apply代表会回退以后,stash堆栈/对账会存在记录

2、这次我们使用git stash pop命令测试下效果
首先,我们再次stash下,再利用git stash pop测试下效果
hg@LAPTOP-G8TUFE0T MINGW64 /d/IT/01 IT/github_repo/01 极客时间:git学习测试库/git_learning (temp)
$ git stash
Saved working directory and index state WIP on temp: 30c1501 Add test

hg@LAPTOP-G8TUFE0T MINGW64 /d/IT/01 IT/github_repo/01 极客时间:git学习测试库/git_learning (temp)
$ gs
On branch temp
nothing to commit, working tree clean

hg@LAPTOP-G8TUFE0T MINGW64 /d/IT/01 IT/github_repo/01 极客时间:git学习测试库/git_learning (temp)
$

hg@LAPTOP-G8TUFE0T MINGW64 /d/IT/01 IT/github_repo/01 极客时间:git学习测试库/git_learning (temp)
$ git stash pop
Removing readme.md
On branch temp
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   index.html
        deleted:    readme.md

no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (144c639fdc85c8bb7265b71b0943f237b082f871)

hg@LAPTOP-G8TUFE0T MINGW64 /d/IT/01 IT/github_repo/01 极客时间:git学习测试库/git_learning (temp)
$ git stash list
stash@{0}: WIP on temp: 30c1501 Add test

hg@LAPTOP-G8TUFE0T MINGW64 /d/IT/01 IT/github_repo/01 极客时间:git学习测试库/git_learning (temp)
$
可以发现,apply代表会回退以后,stash堆栈/对账会存在记录。但pop不会保存。

实验结束。

3、命令总结"Fira Code",

1.临时保存工作区和暂存区的内容:stash命令

$ git stash apply
或者
$ git stash pop
执行上面2条命令都可以的, apply代表会回退以后,stash堆栈/对账会存在记录。但pop不会保存。
#注意:git stash list 命令显示的最左一列就是stash的序号,如stash@{2} 和 stash@{1},序号中数字大的代表的是较早的stash。我们pop的时候可以加具体的序号,不加序号的(缺省情况下)为 stash@{0}。
用法:git stash pop stash@{2}
git stash pop = git stash pop stash@{0}

$ git stash list #查看堆栈里的内容
stash@{0}: WIP on temp: 30c1501 Add test

2.好问题:执行cherry-pick

image-20211213135933425

作者回复: 好问题。比较不麻烦的做法,分两步走。

1)在feature分支上,先把dev上修复bug的那个commit 执行cherry-pick。

2)再git stash pop继续开发。

案例:

image-20211213140105146

3.git worktree add ...

image-20211213141321831

关于我

我的博客主旨:我希望每一个人拿着我的博客都可以做出实验现象,先把实验做出来,然后再结合理论知识更深层次去理解技术点,这样学习起来才有乐趣和动力。并且,我的博客内容步骤是很完整的,也分享源码和实验用到的软件,希望能和大家一起共同进步!

各位小伙伴在实际操作过程中如有什么疑问,可随时联系本人免费帮您解决问题:

  1. 个人微信二维码:x2675263825 (舍得), qq:2675263825。

    image-20211002091450217

  2. 个人博客地址:www.onlyonexl.cn

    image-20211002092057988

  3. 个人微信公众号:云原生架构师实战

    image-20211002141739664

  4. 个人csdn

    https://blog.csdn.net/weixin_39246554?spm=1010.2135.3001.5421

    image-20211002092344616

  5. 个人github主页:https://github.com/OnlyOnexl

    image-20211212233540208

最后

​ 好了,关于git开发中临时加塞了紧急任务怎么处理?实验就到这里了,感谢大家阅读,最后贴上我女神的photo,祝大家生活快乐,每天都过的有意义哦,我们下期见!

image-20211213141833831

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值