我们使用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>

Git代码管理流程(分支、fork、tag)相关推荐

  1. Git代码管理与发布流程

    分支定义与作用: 主干分支: origin/master:总是代表了生产环境准备就绪的状态的主分支 ,必须保证与生产环境在正常运行的代码一致.(每次需求上线验收完成后,由开发负责人从dev或Hotfi ...

  2. Git 代码管理(代码提交和代码回退)

    Git 代码管理(代码提交和代码回退) Git的主要功能是代码管理,版本管理,分支管理. 在远程代码管理平台上,项目的代码被管理在一个远程代码仓库中,在本地,代码保存在一个本地代码仓库中.通过Git, ...

  3. GIT代码管理-SourceTree工具

    前言 本文主要介绍SourceTree工具在开发过程中的日常代码管理相关操作,此工具作为GIT代码管理的可视化工具使用. 准备工作 在使用SourceTree工具前需要先安装GIT,同时将代码由远程仓 ...

  4. Git—代码管理、提交及冲突解决流程的思考

    1 代码管理   Git不多说,大家都知道这是一个分布式版本控制系统,对开发者而言,可以敏捷高效的进行代码管理及开发,也非常适合多人协作.话不多说,下面就来点干货. 1.1 创建新仓库   我们在工作 ...

  5. Git——代码管理工具

    摘要 Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.Git 是 Linux 内核开发而开发的一个开放源码的版本控制软件.Git 与常用的版本控制工具 CVS, Subv ...

  6. Git代码管理常用命令操作

    一.Git提交代码过程 安装好Git,连接远程仓库地址,拉取代码到本地分支master,根据本地分支master创建分支b,修改完毕后,可以commit到本地分支b,之后可以提交到远程仓库地址,若没有 ...

  7. Git 代码管理常用命令

    1) 远程仓库相关命令 检出仓库:$ git clone git://github.com/jquery/jquery.git 查看远程仓库:$ git remote -v 添加远程仓库:$ git ...

  8. [Git] 代码管理之 Git(一)Git 入门

    Git 简介 当我们开发一个产品的时候.所有的代码并不是一气呵成全部一次性完成的,肯定是经过多个步骤,大项目甚至会多人好几个月甚至几年共同开发而成的,而这个过程中,我们的代码要形成很多个版本,好比(图 ...

  9. Git代码管理常用指令(Git+Gerrit)

    从远程仓库下载新的代码后,需创建本地仓库关联后,在本地仓库开发 git clone... // 克隆远程仓库代码 git branch <branch> // 创建本地仓库 git pul ...

最新文章

  1. 如何免费(轻成本)在网上做推广宣传
  2. 腾讯音乐招 iOS 开发, base 深圳,要求:本科、三年、OC,懂音视频开发优先。...
  3. php文件什么打开,php文件是什么文件_php文件怎么打开 - 学无忧
  4. 【LC3开源峰会网络技术系列之三】基于JStorm的网络分析平台 1
  5. OSPFv2的综合实验试题分析第1例(CCNP阶段)
  6. Android输入系统(三)InputReader的加工类型和InputDispatcher的分发过程
  7. PPT科研绘图第二节 如何调整三维旋转参数
  8. 利用java实现的一个发送手机短信的小例子
  9. HDU 2629 Identity Card
  10. 京东:2022年将在全国范围内招聘超两万名高校毕业生
  11. Java文件流字节流和字符流的区别
  12. EDAS-机器导入失败
  13. 解除Linux最大进程数和最大文件句柄打开数限制
  14. 【python】拉普拉斯和sobel对图像处理
  15. java非静态内部类如何创建对象实例
  16. 增量式修改检验和(IP, TCP, UDP)算法的研究和实现
  17. 代码审查工具 FindBugs
  18. 华为交换机eth口作用_华为5700交换机eth接口做什么用的?怎么使用它?
  19. MATLAB2014b画极坐标散点图
  20. 常用软件列表,根据网上的一位仁兄稍加整理所得。再此感谢那位仁兄。

热门文章

  1. R语言中的I(x^2)
  2. 元气骑士双人异地公网联机工具(仅支持双人、JAVA实现)
  3. 【固定定位和绝对定位】
  4. 学生党直呼哇塞的几个超好用工具
  5. 桌面计算器The C++ Programming Language程序解析
  6. 国际十大炒黄金期货正规平台排名(2023精选榜)
  7. SWIFT电文 MT940客户对账单 报文格式说明
  8. Windows 10如何将网络图标放在桌面
  9. 制造业必须应用RPA的十大环节
  10. 金融信创虽风正时济,应对挑战该如何乘风破浪(一)