年終獎都沒了,還要扣我績效,門都沒有,哈哈。
這波騷Git操作我也是第一次用,擔心閃了腰,所以不僅做了備份,也做了筆記,分享給大家。
文末留言,聊聊你的年終獎。
小A和我在同時開發一個功能模組,他在優化之前的程式碼邏輯,我在開發新功能。
小A在我之前把程式碼提交到了測試分支,我想提交我的新功能程式碼到測試分支時發現巨多衝突,腦袋瞬間就炸了,Boom一聲驚雷響啊。
PS:因為小A的需求不急,但是改動巨大;我的需求很急,馬上要提測,否則就延期扣績效了,說真的,我著急了,哈哈哈。
首先解決衝突浪費時間,我的新功能程式碼每次提測到測試分支都需要解決衝突。
我在測試分支解決衝突,只能按照小A優化後的程式碼邏輯的去解決,和我自己的分支邏輯並不一致。
交付給測試同學的測試分支程式碼,和我自己分支的程式碼不一致,這種測試是沒有意義的。
工廠模式使用的不合理
任務分配的不合理
TIPS:以下程式碼範例語言為Go
因為是工廠設計模式,我負責的實現類A和他的實現類B雖然沒有直接關係。但是因為他修改了工廠類中的方法定義。
比如之前工廠類中的介面是這麼定義的
package factory
type xxx interface {
GetXxxx(ctx context.Context, req aaa.aa) (res bbb.bb, err error)
}
但是小A優化(修改)了工廠類中的介面定義:
package factory
type xxx interface {
GetXxxx(ctx context.Context, req ccc.cc) (res ddd.dd, err error)
}
這樣就導致了一個問題:
我想合併我的程式碼到測試分支也必須將我的實現類像小A一樣,修改傳參型別和返回型別。
但是我們都在不同的分支上開發,我是沒有他定義的型別ccc.cc
,ddd.dd
的。
我又不能直接把他定義的ccc.cc
,ddd.dd
要過來,在我自己的分支上開發,一是因為需求不一致,小A的上線週期會比我長;二是這種操作本身就不規範。
我們想到的方案是合理使用interface
工廠類中方法的入參和出參設定為interface{}
型別
package factory
type xxx interface {
GetXxxx(ctx context.Context, req interface{}) (res interface{}, err error)
}
這樣就比較容易進行擴充套件了。
方法1的入參和出參設定為interface{}
型別的方案,並沒有從根本上解決我們的問題。
原因是這樣的:
小A的需求是整體優化工廠類和各個實現類的入參、出參,優化內部邏輯,抽取方法。
小A的迭代優化修改變動很大,導致和我實現的新需求有比較大的衝突。
但是他的Git分支又在我之前提交到了測試環境,導致我無法正常提交我的程式碼。
如果我要提交就要解決各種衝突,解決衝突就要按照小A的優化邏輯去改,提測分支和我自己分支的不一致,難頂啊。
考慮到小A的修改暫時不需要提測,上線週期也比較長。
最終的解決方案是這樣的:
這波騷操作我也是第一次用,擔心閃了腰,所以不僅做了備份,也做了筆記,分享給大家:
1.先重新命名本地分支
git branch -m 舊分支名稱 新分支名稱
2.刪除遠端分支
git push --delete origin 舊分支名稱
3.上傳新修改名稱的本地分支
git push origin 新分支名稱
4.修改後的本地分支關聯遠端分支
git branch --set-upstream-to origin/新分支名稱
【Git必知必會】多人協同開發,緊急修復線上bug的操作指南。
開發起來一時爽,維護起來火葬場。
Git操作不規範,戰友提刀來相見!
呼應一下開篇,這是臨時解決辦法的一個經驗分享。肯定還有最優解,但是對我來說不重要,再不使用騷操作就該扣績效了。
年終獎都沒了,還要扣我績效,門都沒有,哈哈。
你的年終獎還好嗎,歡迎在評論區討論。
如果覺得這篇文章不錯,歡迎點贊評論。
我在部落格園寫文章不就,希望大家支援一波。