专栏首页Super 前端Git代码管理流程(分支、fork、tag)

Git代码管理流程(分支、fork、tag)

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://ligang.blog.csdn.net/article/details/83035205

我们使用Git做代码管理时,经常会出现这种情况:项目需要稳步迭代升级(暂且叫做标品)的同时,定制化的需求接憧而至。然而定制化内容(不属于正常迭代升级的范围),我们该如何处理?下述如我想到的几种方式:

方式一:做逻辑分支 优点:代码无需单独管理,省事省力 缺点:定制内容一旦过多,对代码的整洁性会有很大的冲击

方式二:定制化项目,单独创建新的工程 优点:对标品迭代升级的项目没有任何干预和影响 缺点:定制化项目一旦需要标品最新的内容做升级,得手动同步

方式三:迭代升级使用分支管理,定制化使用fork项目方式管理 优点:对标品迭代升级的项目没有影响,且升级比较容易 缺点:fork的定制化项目依赖于标品某个时刻,如若强依赖标品的升级囫囵吞枣,选择性升级的灵活性不高

这里,我推荐的是方式三,从某些方面说,这种方式可以做到对代码最大的保护,<下述以gitlab为例>

说明

大的原则:

  • 定制化需求,使用fork<新项目>方式管理<需要强调的是,在做定制化服务前,需要明确和说明,我们只接受定制化项目合并更新标品代码,不接受标品合并更新定制化项目>
  • 标品正常迭代,使用分支方式管理
  • release版本发布后,要打相应的tag,便于回溯~

新项目处理 <fork>

fork项目:

  • 第一步:在标品项目上进行fork操作,命名空间(namespace)选择新项目放置的空间
  • 第二步:fork完成后,进入新fork完成后的项目,在Settings -> General中分别修改
    • General project settings中的Project name为新名称
    • Archive project中的Rename repository中的path为新地址(同新名称)

更新项目:

  • 第一步:在新项目中,添加源项目(标品)地址信息 <如果已经添加,可以跳过>
# 添加标品地址
git remote add upstream git@<address>:<namespace>/<name>.git

# 查看是否添加成功
git remote -v
  • 第二步:更新项目
# 更新argus-fe项目内容
git fetch upstream

# 合并argus-fe的同步
git merge upstream/master

分支说明

master发布版本时,首先修改package.json中version,命名方式用语义化的版本号semver进行控制, 即X.Y.Z (主版本号.次版本号.修订号)

  • 主版本号:当你做了不兼容的 API 修改,或大的功能需求
  • 次版本号:当你做了向下兼容的功能性新增
  • 修订号:当你做了向下兼容的问题修正

修改完后,运行npm run changelog,生成changelog一并提交!**补充,**关于changelog可查看:Git提交信息规范化

分支

说明

master

标本定版主分支

develop

开发稳定版本(测试,待上线)

hotfix-xx

指定bug修复版本(临时分支,处理完后可选择删除或保留)

feature-xx

功能开发分支(开发完成后可选择删除或保留)

  • master分支,只允许merge develop|hotfix分支代码
  • develop分支,只允许merge master|feature-xx分支代码
  • feature-xx分支,只允许merge develop分支代码
  • hotfix-xx分支,只允许merge master分支代码

tag说明

命令操作: 更多操作命令请查看Git 标签

# 列出所有tag
git tag -n
# 查看tag信息
git show <tag_name>

# 创建tag
git tag -a <tag_name> -m <tag_describe>
# 推送到远程
git push origin <tag_name>

# 删除tag
git tag -d <tag_name>
# 删除远程
git push origin --delete tag <tag_name>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 五步掌握Git的基本开发使用命令

    默认情况下,Git执行"快进式合并"(fast-farward merge),会直接将Master分支指向Develop分支。使用--no-ff参数后,会执行...

    奋飛
  • package.json

    每个项目的根目录下面,一般都有一个package.json文件,定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称、版本、许可证等元数据)。npm i...

    奋飛
  • 单页应用优化--懒加载

    最近查阅了一些帖子,发现了一个极其强大的方法,其兼容性有待提高~~(但已有相关的的Polyfill方式)

    奋飛
  • Android解析WindowManager(三)Window的添加过程

    前言 在此前的系列文章中我们学习了WindowManager体系和Window的属性,这一篇我们接着来讲Window的添加过程。建议阅读此篇文章前先阅读本系列的...

    用户1269200
  • 【学习】Intel芯片架构中TEE的实现技术之SGX初探(二)

    之前介绍过一篇intel芯片架构中SGX技术的文章: Intel芯片架构中TEE的实现技术之SGX初探 今天我们再来详细了解下。 软件应用通常需涉及诸如密码、账...

    安智客
  • 走进Java接口测试之接口管理工具Swagger2

    现在都奉行前后端分离开发和微服务大行其道,前后端技术在各自道路上越走越远。 前后端唯一联系变成了API接口,API文档变成了前后端开发人员&测试人员联系的纽带。...

    高楼Zee
  • 高性能、高可用平台架构的演变过程

    在如今移动互联网、互联网+、大数据的时代,各类的互联网网站、平台异常突起,如同雨后春笋,有种“忽如一夜春风来,千树万树梨花开”感觉。

    民工哥
  • matlab书写规范及标点符号运用

    b) 在书写代码时赋值符和运算符前后加空格,如 a = 2*b + 3*sin(c);

    艾木樨
  • Swagger详细了解一下(长文谨慎阅读)

    Swagger 是最流行的 API 开发工具,它遵循 OpenAPI Specification(OpenAPI 规范,也简称 OAS)。 Swagger 可以...

    IT苦逼一枚
  • 绿云再获亿元B+轮融资,四轮驱动战略如虎添翼|腾讯SaaS加速器·学员动态

    ? 来源 | 腾讯SaaS加速器首期项目-绿云软件 ---- ? 【杭州,2020年4月20日】腾讯SaaS加速器首期成员—中国酒店行业的技术领导者,杭州绿云...

    腾讯SaaS加速器

扫码关注云+社区

领取腾讯云代金券