温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2022-06-08 13:46:01 来源:亿速云 阅读:217 作者:iii 栏目:开发技术

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

    问题描述

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

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

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

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

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

    反思出问题的原因

    • 工厂模式使用的不合理

    • 任务分配的不合理

    代码层面

    因为是工厂设计模式,我负责的实现类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)  
    }

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

    从git操作上优化

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

    原因是这样的:

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

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

    最终的办法是这样的

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

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

    git 重命名远程分支

    1.先重命名本地分支

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

    2.删除远程分支

    git push --delete origin 旧分支名称

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

    git push origin 新分支名称

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

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

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

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI