博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
git revert 的问题
阅读量:5989 次
发布时间:2019-06-20

本文共 1335 字,大约阅读时间需要 4 分钟。

hot3.png

需求来了,甲同学在主干上做了一次commit, 经过团队的code review,以及QA同学的测试,没有问题. 改动了三个文件ABC.等着上线了就.

然后PM同学觉得这个需求可能这次上不了,先hold但是以后可能会上. 甲同学于是checkout了一个分支出去,就叫feature吧. 对了,多人开发嘛不是这一次commit还在主干上呢得revert回来啊. 无论有没有其他同学拉取到这次commit,都应该做一次revert吧. 于是甲同学在主干上做了一次revert.

接着这次feature的需求加了一点点,好吧在feature上改改改. 最后feature这个branch的文件变成了A'B'CD. 也就是说最终变动了AB文件并且新增了一个D文件.C文件还是原来那个. 接着再次code review,QA同学测试通过.

PM同学通知还是上吧这次需求. 上呗,于是甲同学准备把feature分支合入主干. AB文件有冲突了啊,解决冲突呗还能怎么着,于是顺利完成本次需求. 等着上线发版.that's all.

写到这里,你有没有发现问题, 注意C文件,把feature合入主干的时候是没有冲突的, 对,C文件在feature分支上就没有改动过. C文件里的内容还是本次需求上的.没有任何问题.

但是当你合回主干的时候,C文件的改动就是全部没了.

因为主干上你revert的时间是在feature分支checkout出去之前的. 其实合回主干的时候,你甚至都看不到关于C文件的任何输出. 你看到的只有AB文件的冲突以及新增的一个D文件.

对于git来说,C文件就应该还是上一次需求的C文件. git认为C文件还是上一次需求的C文件.就该是这样.

that's all.

当时我手都抖了,一合一个准,C文件的变动就是没了.怀疑人生了都.

真实情况: C文件代表好几个文件. 甲同学一共三个人. 主干上的revert是一个同学做的, 接着checkout出一个新分支继续开发又是另一个同学. 我呢我在feature分支上改了大概10行代码.就是A'B'. 临上线了,这两个同学都不在,生病请假了. 嗯,最终把代码合入主干的人是我. 至于这次merge的评审是怎么过的, 我啊,怪我,我私自让一个小兄弟给我过的. 当时主要负责这次需求的人都不在,我也不能不合吧. 你感受一下吧.

至于后来怎么把那些变动找回来,cherry pick了解一下. 光荣属于绿哥,百度的程序员真的很牛逼.

写到这里,心有余悸, 我被吓坏了,我被吓坏了,我被吓坏了, 对,我就是这么菜.

RD,QA,PM谁都没有问题.只怪我自己git段位低啊.

如果你是我,这种case你有几成把握能cover住,或者规避掉. 如果有,请收下我的膝盖我佩服你的git段位. 如果没有,注意一下吧.毕竟也算不得什么极端case.

周一还要厚着脸皮让QA同学重新跑case, 据说checklist有200多个. 唉 好害羞. 对了,我不怎么想去大团队大App了, 一个工程分成两个团队12个人的我就已经受不了了.

转载于:https://my.oschina.net/tanghaoo/blog/2959675

你可能感兴趣的文章
minix3(一)安装以及编辑文件
查看>>
C++/C union使用记一下锅
查看>>
Python集合常用的操作
查看>>
生成Xnb文件[转]
查看>>
剑指offer——面试题15.2:判断两个整数m和n的二进制中相差多少位
查看>>
[2018/11/14]操作系统
查看>>
2018/11/29 一个64位操作系统的设计与实现(环境配置)
查看>>
第四章 容器
查看>>
表格的增删改查
查看>>
poj Squares n个点,共能组成多少个正方形 二分 + 哈希
查看>>
阿里巴巴Java开发手册(详尽版)
查看>>
CSS中定义CLASS时,中间有空格和每空格的区别
查看>>
自定义博客园皮肤:暗色流体响应式布局
查看>>
几种常用递归查询
查看>>
Java面试问题——线程全面详解总结
查看>>
UML实践详细经典教程
查看>>
js面向对象,多种创建对象方法!
查看>>
MVC模式 和 MVVM模式
查看>>
Spring事务注意点
查看>>
echarts 的自适应
查看>>