git revert 的问题
2019獨角獸企業重金招聘Python工程師標準>>>
需求來了,甲同學在主干上做了一次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
總結
以上是生活随笔為你收集整理的git revert 的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在电脑桌面怎样用命令开启远程桌面?
- 下一篇: linux一切皆文件之tty字符设备(深