这里使用 gitlab 做服务器, 客户端主要使用 git extensions.

=============================

gitlab 项目成员类型:

=============================

1. guest : 能在 gitlab 网页上创建 issue, 查看 wiki

2. reporter: 权限比guest更大, 能 clone 项目

3. developer: 能commit代码

4. maintainer: 能进行项目成员管理, 能进行分支保护管理

5. owner: 能删除项目, 能删除 issue.

=============================

gitlab 项目可见性

=============================

新建项目首先要选定项目的可见性, 有如下几种分类:

1. private -私有项目, 企业内的项目一般都选这个类型, 只有项目组成员能访问

2. internal- 内部项目, 只要具有登录权限的用户都能看到代码

3. public -公开项目, 不需登录即可 clone 代码.

=============================

分支策略管理

=============================

这里采用了 gitflow 的分支管理策略,  很多git客户端都提供 gitflow 插件, 我倒不推荐使用这些插件, 采用标准的新建分支/合并/创建tag命令即可.

分支名 分支类型 是否为保护分支? 分支链路 描述
master main类型分支(长久分支) 保护分支  release-xxx => master 这个分支的代码即为当前生产环境的代码
develop main类型分支(长久分支) 如果要加入code review环境, 应该将这个分支设为保护分支,否则为非保护分支

初始化时来源于 master,

日常: feature-xxx => develop

 这个分支始终保留着最新的开发代码, 阶段性地合并 feature 系列分支
feature系列分支 supporting类型分支(短生命周期) 非保护分支 develop=>feature-xxx=>develop

每个人领feature任务, 为该任务建立一个feature分支. 命名规范应该时候 feature-xxx, 分支开发完毕要合并到develop分支.

开发人员平时应该在feature系列分支上工作, 假设下个大版本中包含5个feature, 只有这5个feature都合并到 develop 之后, 才能合并下下大版的feature.

release系列分支 supporting类型分支(短生命周期) 非保护分支 develop=>release-xxx => (master和develop)  当 develop 分支完成了预期feature的合并, 就可以对 develop 做快照, 生成一个 release 分支. develop 分支可以继续演进. release 编译之后要进行QA+UAT测试.  QA和UAT中出现的bug,也是也要在这个分支上解决.  所有问题解决后, 就正式发版, 需要及时合并到 master 分支, 并对master分支打 tag. 然后要合并到 develop 分支, 因为develop分支可能已经要修改, 所以需要手工解决代码冲突. 
bugfix系列分支  supporting类型分支(短生命周期)  非保护分支 master => bugfix-xxx => (master和develop)  当线上有bug, 应基于master生成bugfix-xxx 分支, 解决了该bug后, 要merge 会 master, 并为master打tag. 然后在merge 会 develop 分支, 并删除该bugfix分支

对于 feature/bugfix/release系列分支, 可以考虑定期将那些结束了很长时间的分支及时删除, 历史分支太多会加大管理负担.

feature 系列分支的命名规范应该为: feature-大版本-功能名

release  系列分支的命名规范应该为: release-大版本

bugfx 系列分支的命名规范应该为: bugfix-bug名

master 分支上的每次变更,都应及时打上 tag

=============================

tag管理

=============================

git extensions 创建tag的方法是, 在 commit history 区上选中任一个 commit后, 在右键菜单中都可以使用create tag 打tag了, 默认情况下, git push并不会上传 tag 到服务器上, 需要在push时打开上传 tag 选项

git extensions 左侧导航树默认仅仅显示local和remote的分支, 不显示tag, 可以打开那个显示tag的开关

=============================

code review 流程

=============================

基于 gitflow 管理, 最好的code review应该是在merge feature代码到 develop 的时候. 为了防治代码未经code review就被合并, 最好是将 develop 分支设置为保护分支. code review 的流程是:

1. 开发人员在 feature-xxx 分支开发完成后, push 代码到gitlab 服务器上

2. 开发人员在 gitlab 网页发起 merge request 请求, 可以指定 code reviewer , 也可以在描述区使用 @ 的方式抄送给其他人.

3. code reviewer登录 gitlab, 审核代码

=============================

参考

=============================

Git 在团队中的最佳实践--如何正确使用Git Flow

关于GITLAB若干权限问题

转载于:https://www.cnblogs.com/harrychinese/p/gitlab.html

使用 gitlab 进行代码管理相关推荐

  1. 基于Gitlab的代码管理教程

    Git简介 Git网址:https://gitforwindows.org/ Github网址:https://github.com/ 工作区:就是你在电脑里能看到的目录 暂存区:英文叫 stage ...

  2. vue-cli+gitlab代码管理时,vue项目配置文件设置

    2019独角兽企业重金招聘Python工程师标准>>> vue-cli生成的项目,使用gitlab进行代码管理,怎样忽略项目配置文件的提交(避免每次合并分支代码冲突,而且每次修改配置 ...

  3. Gitlab和Sourcetree结合使用实现代码管理

    Gitlab和Sourcetree结合使用实现代码管理 准备工作 安装git 安装sourcetree 注册gitlab账号 配置SSH Keys SSH是目前较可靠,转为远程登录会话和其他网络服务提 ...

  4. 配置gitlab环境实现代码管理及Web Hook测试和ldap认证

    前沿: 对于代码库感触有点多,用过redmine(差点忘了名字),还有就是gitweb,最后就是gitlab  . gitlab是我用的很舒服的东西,在2012就接触了,当时开发水平见不得人,主要上传 ...

  5. gitlab 只能owner 上传_代码管理-gitlab使用方法建议

    对gitlab的使用主要从两个角度去分析,一个是管理员,一个是开发提交者. 1. 管理员使用 1.1 初始配置 浏览器访问 http://服务器IP:11000 第一次访问会默认以root管理员用户登 ...

  6. gitlab创建分支上传文件_代码管理-gitlab使用方法建议

    对gitlab的使用主要从两个角度去分析,一个是管理员,一个是开发提交者. 1. 管理员使用 1.1 初始配置 浏览器访问 http://服务器IP:11000 第一次访问会默认以root管理员用户登 ...

  7. 代码管理工具—GitLab

    1.GitLab介绍 GitLab 是一个用于仓库管理系统的开源项目.使用Git作为代码管理工具,并在此基础上搭建起来的web服务.可通过Web界面进行访问公开的或者私人项目.它拥有与Github类似 ...

  8. 代码管理平台gitlab

    一.gitlab介绍 GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务. gitlab官网:https://about.gitlab.com ...

  9. Git学习二、GitLab官网,安装自己的一个私有Gitlab代码管理库

    Git学习一.TortoiseGit 安装后,文件夹前面不显示相关状态图标解决办法 Git学习二.GitLab官网,安装自己的一个私有Gitlab代码管理库 Git学习三.Git与SVN的差异,Git ...

最新文章

  1. 你会去创建一个线程去处理压缩日志并删除吗?
  2. 计算机一级考模拟试题,计算机一级MSOffice考前模拟试题「附答案」
  3. java-1.11.0的环境配置,JAVA 环境配置
  4. open ai gpt_您实际上想尝试的GPT-3 AI发明鸡尾酒
  5. linux驱动简单介绍
  6. 单元测试界的高富帅,Pytest框架,手把手教学,高阶用法实战
  7. python 列表生成式 字典生成式
  8. android随机小球碰撞(一)边界检测
  9. 报错:/ma.jsp (line: [1], column: [45]) The JSP specification requires that an attribute name is preced
  10. 霍夫丁不等式、马尔科夫不等式证明
  11. 某运输管理系统(TMS)概述
  12. down mark 打钩_Markdown 基本语法
  13. 1bit quantization
  14. cPanel/WHM前台后台的常用操作
  15. mapbox加载天地图
  16. ubuntu16.04安装ROS Kinetic步骤及安装出现的问题解决
  17. 机械狗的机器学习入门(绪)——做一盘大菜。2019/3/31
  18. 利用ARCGIS地表温度反演结果交叉检验
  19. 教师编制报名信息计算机等级填错了,教师资格证报名审核通过后发现自己资料填写错误怎么办?...
  20. Go使用redigo实现简单分布式锁

热门文章

  1. Ubuntu服务器安装lamp
  2. java传参怎么理解_如何理解Java的值传递
  3. mysql 5.7.20主从配置_mysql5.7.20免安装版配置方法图文教程
  4. bp神经网络代码_精通数据科学笔记 神经网络
  5. osadmin php,OSAdmin - PHP开源管理后台
  6. 百度地图的两套JavaScript API
  7. 侧边栏跳转_微信和三星首次系统级合作:在负一屏和侧边栏直接打开小程序
  8. 5.0安装没有costom mysql_Zabbix5.0监控mysql配置
  9. python qcut_Python之Pandas库学习(三):数据处理
  10. python安装pyqt5第三方_搭建pyqt5开发环境(python3+pycharm2019+pyqt5)