Git操作不规范,战友提刀来相见。

news2024/11/25 0:45:37

年终奖都没了,还要扣我绩效,门都没有,哈哈。

这波骚Git操作我也是第一次用,担心闪了腰,所以不仅做了备份,也做了笔记,分享给大家。

文末留言抽奖,聊聊你的年终奖。

问题描述

小A和我在同时开发一个功能模块,他在优化之前的代码逻辑,我在开发新功能。

小A在我之前把代码提交到了测试分支,我想提交我的新功能代码到测试分支时发现巨多冲突,脑袋瞬间就炸了,Boom一声惊雷响啊。

PS:因为小A的需求不急,但是改动巨大;我的需求很急,马上要提测,否则就延期扣绩效了,说真的,我着急了,哈哈哈。

分析一下

  1. 首先解决冲突浪费时间,我的新功能代码每次提测到测试分支都需要解决冲突。

  2. 我在测试分支解决冲突,只能按照小A优化后的代码逻辑的去解决,和我自己的分支逻辑并不一致。

  3. 交付给测试同学的测试分支代码,和我自己分支的代码不一致,这种测试是没有意义的。

反思出问题的原因

  1. 工厂模式使用的不合理

  2. 任务分配的不合理

代码层面

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的上线周期会比我长;二是这种操作本身就不规范。

解决问题

1.代码层面:

我们想到的方案是合理使用interface

工厂类中方法的入参和出参设置为interface{}类型

package factory

type xxx interface {
   GetXxxx(ctx context.Context, req interface{}) (res interface{}, err error)  
}

这样就比较容易进行扩展了。

2.Git层面:

方法1的入参和出参设置为interface{}类型的方案,并没有从根本上解决我们的问题。

原因是这样的:

小A的需求是整体优化工厂类和各个实现类的入参、出参,优化内部逻辑,抽取方法。

小A的迭代优化修改变动很大,导致和我实现的新需求有比较大的冲突。

但是他的Git分支又在我之前提交到了测试环境,导致我无法正常提交我的代码。

如果我要提交就要解决各种冲突,解决冲突就要按照小A的优化逻辑去改,提测分支和我自己分支的不一致,难顶啊。

考虑到小A的修改暂时不需要提测,上线周期也比较长。

最终方案:

最终的解决方案是这样的:

  1. 从远程的测试分支拉取了一个备份分支,删除小A提交的远程测试分支
  2. 把我本地需要测试的分支提交到测试分支,交付测试(因为我的需求很急,而小A的需求并不急)

相关命令

这波骚操作我也是第一次用,担心闪了腰,所以不仅做了备份,也做了笔记,分享给大家:

Git 重命名远程分支

1.先重命名本地分支

git branch -m 旧分支名称  新分支名称

2.删除远程分支

git push --delete origin 旧分支名称

3.上传新修改名称的本地分支

git push origin 新分支名称

4.修改后的本地分支关联远程分支

git branch --set-upstream-to origin/新分支名称

推荐阅读

【Git必知必会】多人协同开发,紧急修复线上bug的操作指南。

总结

开发起来一时爽,维护起来火葬场。

Git操作不规范,战友提刀来相见!

呼应一下开篇,这是临时解决办法的一个经验分享。肯定还有最优解,但是对我来说不重要,再不使用骚操作就该扣绩效了。

年终奖都没了,还要扣我绩效,门都没有,哈哈。

一起进步 抱团取暖

就业环境不好,就业压力大,除了提高自己更应该抱团取暖,互相帮助:

点这里—>加入就业互助交流群👏👏👏

支持一波

最后,如果你觉得这期内容不错的话,一定要三连支持一波。

下方有我的公众号卡片,欢迎扫码关注,领取免费学习资料。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/526274.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023年最新Python安装详细教程

目录 一、python官网 二、在官网的Downloads栏目,选择对应的操作系统 三、进入windows对应的页面,选择python版本 (1)选择python的稳定发布版本Stable Releases (2)下载python的安装程序Windows Installer 四、运行安装python的安装程序Windows Install…

【郭东白架构课 模块二:创造价值】25|节点四:架构规划之需求确认

你好,我是郭东白。 上节课我们讲了架构规划这个环节的第一个部分,也就是统一语义。那么这节课我们就来讲第二个部分——需求确认。 需求确认与统一语义的过程是密不可分的。需求确认是在统一语义赋能之下进行的,所以两者并不是先后顺序的关系…

【模拟IC】MOM 电容 和 MIM 电容的简介与比较

文章目录 一、MIM和MOM电容简介1、MIM (Metal-Insulator-Metal)电容2、MOM(Metal-Oxide-Metal)电容 二、 先进工艺下,MIM 和 MOM 电容的比较1、单位面积容值2、工艺实现和电压系数3、电容密度受频率的影响(稳定性)4、自谐振频率随面积的变化5、品质因数6…

ChatGPT火爆科研圈,登上《Nature》《Science》正刊

ChatGPT火出圈了,几乎涉及到各行各业的每个领域,科研圈更甚。 《Science》期刊主编H. HOLDEN THORP发表关于ChatGPT的社论: “ChatGPT is fun, but not an author”。 “ChatGPT 很好玩,但不是作者” 文章指出,许多担忧…

JavaWeb-CSS的盒模型与弹性布局

目录 CSS的盒模型边框内边距外边距块级元素水平居中 弹性布局常用的一些属性justify-contentalign-items CSS的盒模型 每一个HTML就相当于一个矩形的"盒子". 这个盒子由以下几个部分组成 边框 border内容 content(下图中间蓝色部分)内边距 padding外边距 margin 边…

【饭谈】ChatGpt如果让软件ui都消失的话,那ui自动化测试该何去何从?

“未来的软件长什么样?” 一位妹子产品经理问我:“你说说未来的软件ui是什么样的?听到这个问题我先是诧异了一下,随即陷入了沉思。” 我看着眼前的产品经理,她是一位比较年轻干练的女强人类型,1.65的身材…

Mac软件打开提示:已损坏,无法打开。您应该将它移到废纸娄 怎么解决?

新入手的苹果电脑打开软件出现:“已损坏,无法打开。您应该将它移到废纸娄” 或 “已损坏,打不开。推出磁盘映像”。这个怎么解决? 第一部分: 1、点菜单栏搜索图标,输入:终端 ,找到后…

2022 第十三届蓝桥杯大赛软件赛省赛(第二场),C/C++ 大学B组题解

2022 第十三届蓝桥杯大赛软件赛省赛(第二场),C/C 大学B组题解 文章目录 第1题 —— 练习 (5分)第2题 —— 三角回文数 (5分)第3题 —— 卡片 (10分)第4题 —— 考勤刷卡 …

软考A计划-真题-分类精讲汇总-第九章(数据结构与算法基础)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

Unity VR开发教程 OpenXR+XR Interaction Toolkit (一) 安装和配置

文章目录 📕前言❓什么是 OpenXR❓什么是 XR Interaction Toolkit 📕教程说明📕第一步:导入 OpenXR📕第二步:导入 XR Interaction Toolkit⭐导入 Starter Assets⭐添加 Preset⭐设置 Preset Manager 的 Fil…

VLAN(含配置命令行)

一、VLAN的概念及优势 虚拟局域网(VLAN)是一组逻辑上的设备和用户,这些设备和用户并不受物理位置的限制,可以根据功能、部门及应用等因素将它们组织起来,相互之间的通信就好像它们在同一个网段中一样,由此得…

分布式计算实验4 随机信号分析系统

一、实验要求 利用MOM消息队列技术实现一个分布式随机信号分析系统,具体要求: 1.随机信号产生器微服务每隔100毫秒左右就产生一个正态分布的随机数字,并作为一个消息发布。 2.一个随机信号统计分析微服务,对信号进行如下分析&a…

【开发工具 - vscode】vscode配置C/C++运行环境

【开发工具 - VSCode】vscode配置C/C环境 准备工作第一步 下载vscode第二步 下载mingw第三步 将mingw添加至系统变量中第四步 打开VsCode安装一下必要的插件 正式开始配置第一步 新建个存放C/C文件的文件夹,并新建个cpp文件配置方法一 借助run code 插件的配置方法 …

c语言平方(c语言平方怎么打)

C语言中怎么求平方 a^6 是a和6的异或,并不是5的6次幂。 你的程序会如下计算: 5是101 ,6是110,你的答案你一定是011,也就是3~C语言中^是指抑或运算符,不是求幂的。你要求平方就 ba*a;6次方就乘6次。#include…

java调用chatgpt接口,实现专属于自己的人工智能助手

文章目录 前言导包基本说明请求参数响应参数创建请求和响应的VO类 代码编写使用最后说明 前言 今天突然突发奇想,就想要用java来调用chatget的接口,实现自己的聊天机器人,但是网上找文章,属实是少的可怜(可能是不让发吧)。找到了…

Unity鼠标带动物体运动的三种方法

目录 第一种:物体跟随鼠标移动。 第二种:鼠标拖动物体运动。 第三种:鼠标点到哪,物体运动到哪。 第一种:物体跟随鼠标移动。 描述:鼠标左键点击物体,将物体拾起,松开鼠标左键&…

每日一练蓝桥杯C语言:2020年真题题集(B组)

在这里我给大家推荐一款不错刷算法学习网站:点击这处链接牛客网;牛客网作为国内内容超级丰富的 IT 题库,各种东西看的我眼花缭乱,题库面试学习求职讨论大厂内推等等服务,堪称"互联网求职神器"。它好就好在不…

MySQL(九):MVCC能否解决幻读问题

尺有所短,寸有所长;不忘初心,方得始终。 请关注公众号:星河之码 幻读【前后多次读取,数据总量不一致】 同一个事务里面连续执行两次同样的sql语句,可能导致不同结果的问题,第二次sql语句可能会返…

CSS3动画属性 animation详解(看完就会)

CSS3动画属性 animation 文章包含个人理解错误请指出 往期文章 【css高级】变量详解 轮播图swiper框架的基本使用【Transform3D】转换详解(看完就会)【css动画】移动的小车 【CSS3】 float浮动与position定位常见问题(个人笔记&#xff09…

MySQL入门安装(一步一图)

♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维课堂笔记,努力不一定有收获,但一定会有收获加油!一起努力,共赴美好人生! ♥️夕阳下,是最美的绽放&#xff0…