我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何利用go语言实现Git重命名远程分支  

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何利用go语言实现Git重命名远程分支  

本文小编为大家详细介绍“如何利用go语言实现Git重命名远程分支  ”,内容详细,步骤清晰,细节处理妥当,希望这篇“如何利用go语言实现Git重命名远程分支  ”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

    问题描述

    小A和我并行开发,他在优化之前的代码逻辑,我在开发新功能。

    小A在我之前把代码提交到了测试分支,我想提交我的新功能代码到测试分支时发现巨多冲突。

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

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

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

    反思出问题的原因

    • 工厂模式使用的不合理

    • 任务分配的不合理

    代码层面

    因为是工厂设计模式,我负责的实现类A和他的实现类B虽然没有直接关系。但是因为他修改了工厂类中的方法定义。

    比如之前工厂类中的接口是这么定义的

    package factorytype xxx interface {   GetXxxx(ctx context.Context, req aaa.aa) (res bbb.bb, err error)  }

    但是小A修改了工厂类中的接口定义:

    package factorytype 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 factorytype xxx interface {   GetXxxx(ctx context.Context, req interface{}) (res interface{}, err error)  }

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

    从git操作上优化

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

    原因是这样的:

    小A的需求是整体优化工厂类和各个实现类的入参、出参,优化内部逻辑,抽取方法。小A的修改导致和我的实现逻辑有比较大的冲突。

    但是他的git提交又在我之前提交到了测试环境,导致我无法提交我的代码,如果要提交就要解决各种冲突。解决冲突就要按照小A的优化逻辑去改,给到测试同学测的有和我自己分支的不一致。难顶啊。考虑到小A的修改暂时不需要提测,上线周期也比较长。

    最终的办法是这样的

    从远程的测试分支拉取了一个备份分支,删除远程的测试分支

    把我本地需要测试的分支提交到测试分支,交付测试。

    git 重命名远程分支

    先重命名本地分支

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

    删除远程分支

    git push --delete origin 旧分支名称

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

    git push origin 新分支名称

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

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

    读到这里,这篇“如何利用go语言实现Git重命名远程分支  ”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    如何利用go语言实现Git重命名远程分支  

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    如何利用go语言实现Git重命名远程分支  

    本文小编为大家详细介绍“如何利用go语言实现Git重命名远程分支 ”,内容详细,步骤清晰,细节处理妥当,希望这篇“如何利用go语言实现Git重命名远程分支 ”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。问题描
    2023-07-02

    利用go语言实现Git 重命名远程分支

    目录问题描述反思出问题的原因代码层面解决问题从代码设计上优化从git操作上优化最终的办法是这样的git 重命名远程分支问题描述 小A和我并行开发,他在优化之前的代码逻辑,我在开发新功能。 小A在我之前把代码提交到了测试分支,我想提交我的新功
    2022-06-08

    如何利用Redis和Go语言实现分布式锁功能

    如何利用Redis和Go语言实现分布式锁功能引言:在分布式系统中,为了保证数据的一致性和并发安全,经常需要使用分布式锁来实现资源的互斥访问。本文将介绍如何利用Redis和Go语言实现分布式锁功能,并提供具体的代码示例。一、什么是分布式锁分布
    2023-10-22

    如何利用Redis和Go语言实现分布式计数器功能

    如何利用Redis和Go语言实现分布式计数器功能介绍:在分布式系统中,计数器是一种常见的功能需求。分布式计数器可以用于统计网站的访问量、消息队列的消费次数等场景下。Redis是一种高性能的内存数据库,而Go语言是一种轻量级的编程语言,结合这
    2023-10-22

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录