前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Git代码管理流程(分支、fork、tag)

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

作者头像
奋飛
发布2019-08-15 16:34:30
1.7K0
发布2019-08-15 16:34:30
举报
文章被收录于专栏:Super 前端Super 前端

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

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

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

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

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

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

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

说明

Git 分支管理流程
Git 分支管理流程

大的原则:

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

新项目处理 <fork>

fork项目:

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

更新项目:

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

# 查看是否添加成功
git remote -v
  • 第二步:更新项目
代码语言:javascript
复制
# 更新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 标签

代码语言:javascript
复制
# 列出所有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>
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年10月13日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 说明
    • 新项目处理 <fork>
      • 分支说明
        • tag说明
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档