• 代码管理的思考


    git管理代码仓库遇到的一些问题

    多人多项目同根目录的问题

    root
    --project1
    --project2
    ...
    

    当然这种情况其实不应该出现的,但是由于历史原因,多个项目有公用的一些东西,每个项目都很庞大,导致拆分比较费劲,短期无法做。代码发布流程是内网->dev->master,各个项目每周有例行发布时间,但是由于测试进度不一致导致的代码被别的项目带出,那么应该如何平衡多个项目的发布问题?

    解决方案1

    这里有个前提:每次开发新需求都是从master上拉取自己的开发分支。这样我们在测试内网是没问题,然后在往dev合并的时候要注意,只需要把你的代码merge到dev分支,而不要同步dev到你的开发分支,当然在测试期间要保持你的开发分支纯净(不要修改代码,修改代码另外开一个新分支,毕竟git中建立分支是很方便的)。在dev测试通过之后,就可以把你的开发分支合并到master,此时master就只有你修改过的代码。大体流程如下:
    image.png

    解决方案2

    保证合并到dev的代码是马上会发的(比如今晚或者两天内),那么所有的项目都测试完成再统一进行提交到master。或者说排队发布,只要有一个没发出去,那么别的项目就不可以发到dev。

    代码拆分

    基于以上的项目,我们可以拆分出某个独立的项目,一般来说这些独立的项目没有依赖公共文件,项目所在文件夹也是独立的,因此我们就可以直接拆分出来,并且要把他的git记录单独提取出来。
    创建新分支

    git check -b new branch
    

    剥离对应文件夹

    git filter-branch -f --prune-empty --subdirectory-filter Dir
    

    这样根目录下就只会存在你自己的项目,而且该项目的git记录也都存在而且不包含别人的提交记录。

    关于代码回滚

    我们在开发中可能会不小心提交了不该提交代码,而此时又合并到了dev ,大家想到的可能就是代码回滚,但是要注意几个问题:
    1.回滚记录中有没有别人提交的代码
    2.回滚有可能遇到合并记录的时候,会回滚失败
    3.回滚要不要把之前的commit清除掉
    。。。
    这里着重考虑1,2点问题,如果没有遇到合并记录,那么我们可以单独拉取一个分支,回滚,然后通过cherry-pick拉取别人提交记录,然后再覆盖原来的分支,但是如果别人有很多提交记录的时候,工作量就太大了。所以其实最好就是diff现有代码和线上分支代码,把不该提交的干掉,再重新提交一个commit,这样不用关注别人的提交,也保证每次提交记录的保存。当然回滚的时候可以选择使用revert,这样也会保持提交记录,但是依然会把别人的提交覆盖掉。

  • 相关阅读:
    stm32 hal库串口通信资料汇集
    Python实现中英文翻译方法总结
    14个Java并发容器,Java高手都知道!
    instanceof、isInstance、isAssignableFrom的区别!
    7张图了解 Spring Cloud 的整体构架!
    高级java必须清楚的概念:原子性、可见性、有序性
    volatile关键字解析~高级java必问
    Java多线程之守护线程实战
    Tomcat 的 Server 文件配置详解!
    MySQL 备份与还原详解
  • 原文地址:https://www.cnblogs.com/Upton/p/8965955.html
Copyright © 2020-2023  润新知