这里使用 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若干权限问题

使用 gitlab 进行代码管理的更多相关文章

  1. GitLab企业级代码管理仓库

    原文:https://www.cnblogs.com/wsnbba/p/10171052.html   使用GitHub或者码云等公共代码仓库 使用GitLab私有仓库 GitLab是什么? 是一个用 ...

  2. jenkins实现以gitlab为代码仓库的构建

    简介 前一篇随笔是安装jenkins的过程,比较简单,这一次说一下用jenkins配置以gitlab为代码管理仓库的maven项目的完整个构建过程,以及我碰到的一些问题.由于是maven项目,所以我们 ...

  3. 基于Docker搭建GitLab代码管理

    关于Git.SVN的优缺点就不再重复了,本篇主要以实际搭建为主. 1.下载镜像文件 在命令行窗口执行如下指令,预计下载完成4分钟. docker pull beginor/gitlab-ce:11.0 ...

  4. 代码管理——如何连接Git Server,下载代码

    最近一个项目需要与国外团队合作,而他们的代码在GitLab上,需要使用Git工具连接服务器,对于我这样一个SVN的拥护者,当然很高兴去接受这个工作了(鄙视一下目前单位还使用ClearCase). 但操 ...

  5. Gitlab_ansible_jenkins三剑客②Gitlab的后台管理

    系统信息和日志 健康状态 使用gitlab的用户管理和审批功能 创建用户 创建一个lead普通账号 进入test-repo仓库 这样就把dev添加到了test-repo这个项目中,并且有了develo ...

  6. git代码管理工具-SourceTree 使用介绍

    一.SourceTree 简单说明 SourceTree 是git 代码管理的可视化工具,可省去操作命令行的一个图形化工具,下载地址:https://www.sourcetreeapp.com/ 二. ...

  7. 【Git笔记】怎样在同主机同账户下实现多个gitlab帐号管理各自的remote repo

    我们可能会遇到以下的场景: 1)多人共用同一台Linux开发机,该开发机仅仅有一个共用的work帐号,非常多人都用这个帐号登录主机进行日常开发. 2)该work帐号下统一安装了gitclient供多人 ...

  8. 安装并使用SourceTree进行代码管理(Mac环境)

    应用场景 对于我们开发人员来说,熟练使用Git是最基本的技能之一.SourceTree又是一款比较好的Git UI工具,是 Windows 和Mac OS X 下免费的 Git 和 Hg 客户端,主要 ...

  9. GitLab的权限管理及Merge Request

    GitLab的权限管理及Merge Request 原创尘世间一名迷途小码农 发布于2019-06-09 12:40:30 阅读数 2909  收藏 展开 目录 1.前言 2.角色权限 3.强制代码审 ...

随机推荐

  1. 关于javascript中变量及函数的提升

    javascript中变量以及函数的提升,在我们平时的项目中其实还是挺常用的,尤其是大型项目中,不知不觉就会顺手添加一些变量,而有时候自己的不小心就会酿成一些不必要错误,趁有时间整理一下自己对于js中 ...

  2. Cesium专栏-热力图(附源码下载)

    Cesium Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品.它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精 ...

  3. [转]UIPATH机器人指南

    本文转自:https://blog.csdn.net/weixin_33957036/article/details/80907372 介绍 机器人是UiPath的执行代理,可运行Studio中内置的 ...

  4. Android 组件化最佳实践 ARetrofit 原理

    本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/TXFt7ymgQXLJyBOJL8F6xg作者:朱壹飞 ARetrofit 是一款针对Android ...

  5. 【JDBC】CRUD操作

    JDBC的CRUD操作 向数据库中保存记录 修改数据库中的记录 删除数据库中的记录 查询数据库中的记录 保存代码的实现 package demo1; import java.sql.Connectio ...

  6. Transportable tablespace on standby (Doc ID 788176.1)

    APPLIES TO: Oracle Database - Enterprise Edition - Version 10.2.0.1 to 10.2.0.4 [Release 10.2]Oracle ...

  7. 解决VirtualBox虚拟机中PM3总是自动断开的问题

    一.问题 运行环境: 虚拟机软件:VirtualBox 6.0.8 r130520 宿主机:Win10 1803 客户机:Ubuntu 19.04 问题: 当插入PM3并连入虚拟机后,PM3过几十秒会 ...

  8. [开源] FreeSql 配套工具,基于 Razor 模板实现最高兼容的生成器

    FreeSql 经过半年的开发和坚持维护,在 0.6.x 版本中完成了几大重要事件: 1.按小包拆分,每个数据库实现为单独 dll: 2.实现 .net framework 4.5 支持: 3.同时支 ...

  9. CSharpGL(54)用基于图像的光照(IBL)来计算PBR的Specular部分

    CSharpGL(54)用基于图像的光照(IBL)来计算PBR的Specular部分 接下来本系列将通过翻译(https://learnopengl.com)这个网站上关于PBR的内容来学习PBR(P ...

  10. react组件通信方式汇总

    父组件更新组件状态,通过props传递给子组件,子组件得到后进行更新.Timer 是倒计时子组件,集成在了OrderPay父组件里,父组件向子组件传订单数据参数order对象.如下代码: <Ti ...