简单记录,整理。

摘要

为方便大家快速上手Git,并使用Gitlab协同合作,特编写此手册,手册内容不会太丰富与深入。
主要包含如下内容:

  1. Git 使用教程
    1.1 安装
    1.2 常用命令
    1.3 版本控制
    1.4 分支与tag
  2. Gitlab 使用教程
    2.1 界面简介
    2.2 常用功能介绍
    2.3 注意事项
  3. 多人协作流程与规范
    3.1 永久与临时分支
    3.2 工作流图
    3.3 规范
  4. Code Review
    4.1 为什么要有Code Review
    4.2 如何进行?
  5. 参考资料

    后续会加入CI,自动部署等。

1. git 使用教程

1.1 安装

建议安装最新版本,及1.7以上。

下载地址:Git下载页面
官方安装教程:安装教程

1.2 常用命令

在Linux和Mac下直接用终端操作即可;Windows下需要右键打开 “git bash”进行操作。

使用公司的gitlab库,需要忽略验证证书合法性
git config http.sslVerify false

a. 克隆代码库至本地
地址在gitlab.xsjcs.cn项目中获得,请选择https 地址
git clone https://gitlab.xsjcs.cn/powerking/log-sever.git

b. 修改文件并提交
git add file-name
git commit -m "注释"

注释一定要详细,不能是”test”,”update”之类的。并尽量采用英文说明。

c. 推送到远程分支,默认是所有
git push

d. 推送至主分支
git push origin master

更多命令请参考:

Git命用命令

Git命令速查

1.3 版本控制

通常我们在本地提交代码库是git add && git commit 命令,在需要提交到远程时才使用git push 。
因此git 的版本控制分为2块。本地和远程。

在本地命令操作中,还可以采用git reset HEAD 来撤销提交,以及git checkout 来恢复文件。

因此git 文件夹存在三个区域:

实际目录:实际修改的文件。
待提交区:暂存准备提交的内容,提交之后被清空。(也叫做index区)
已提交区:提交到本地git版本库的内容,有版本号。
对这三个区域的操作都可以在本地离线完成。

同时可以通过git status查看文件状态

文件总共四种状态:
与git repository一致
与git repository不一致,已缓存
与git repository不一致,未缓存
还未添加到git repository

通常我们在本地操作完成后,会提交到远程的自己的分支,或开发分支。因此就涉及分支的知识。

1.4 分支与tag

分支是用来将特性开发分开来的,在创建仓库时,master是默认主干。通常我们还会创建一个开发分支”Develop”,以及一个测试分支”testing”。每个开发人员需要开发新功能时,在本地再创建一个自己的分支”feature_a”,然后再将分支提交测试或开发,由相关人员测试并审核通过后,merge到主干。

创建一个feature_a 的分支,并切换到该分支:
git branch feature_a
git checkout feature_a
切换回主:
git checkout master
查看本地分支列表:
git branch -a
删除分支:
git branch -d feature_a

合并分支
合并分支前通常需要使用git diff查看提交的版本差异。在gitlab界面有diff界面可以帮助我们查看。如果没有异常可以配置自动合并,如果自动合并报冲突时,需要手动操作。
git add 标记相关信息
git merge 合并其它分支到当前分支,合并前需要先确认当前分支。

2. gitlab 使用教程

Gitlab界面比较简洁,目前公司配置的gitlab不支持ssh方式。只能采用http(S)进行。但用户注册后,需要配置个人信息,特别是头像。建议都配置。

2.1 界面简介

貌似这个没啥好写的,特别个人头像即可。

2.2 常用功能介绍

创建Groups : 通常我们会给一个项目创建一个组。比如:网管中心、xoyobox、运维小组开发工具。
创建User: 目前开放注册,后续需要邮件申请。
将用户加入组:在创建组后,可以选择将不同的用户加入组进行协同开发。
创建Project: 项目可以选择归属那个组,在创建时,也可以选择导入。创建后,初始化信息注册选择http(s)协议。

2.3 注意事项

由于公司配置https 证书没有购买,当前还没有申请免费的key,所以需要配置忽略验证证书合法性:
git config http.sslVerify false

更多使用可参考:如何使用Gitlab

3. 多人协作流程与规范

为避免2个或多个人同时修改一个功能,或开发一个新的feature,需要有严格的规范或流程进行约束。
因此我们需要创建永久分支与临时分支。

3.1 永久与临时分支

永久分支:master develop testing
临时分支:在开发或发布时创建,使用一段时间后删除。
master: 主干分支,线上发布的稳定版本。以偶数为版本号。
develop:开发分支,将测试完成,或不需要测试的分支一起merge至master。发布时,以奇数为版本号。
testing:测试分支,供前期测试使用的分支,可以不加版本号。

几个重要的说明:

feature

作用:开发新功能
分支来源:develop
结束时:merge develop
说明:特性分支,用来为下一个版本开发新特性。一般只存在开发者本地。

release

作用:发布新版本
分支来源:develop
结束时:merge develop / master
说明:为新产品发布是做支持,一般用于发版,线上环境更新。需要有一定的版本更新说明,bugfix说明,等。提取出来后,只允许小的修改,不允许再增加新的feature。

hotfix

作用:修复发行版本的bug
分支来源:master
结束时:merge develop / master
说明:打补丁

3.2 工作流图

见图

3.3 规范

约定:

  1. master分支中的任何版本都可以立即部署
  2. 每次master变更都来自其它分支的master合并操作
  3. 对master修改必须要有review
  4. 不允许存在奇数版本

4. code review

4.1 为什么要有code review

不觉明厉

4.2 如何进行?

  1. 建议在gitlab界面进行
  2. 提交代码时需要注册分支及版本号
  3. 使用本地git flow 进行合并操作

5. 参考资料

Github-flow
Git_Gitlab

快速上手git gitlab协同合作的更多相关文章

  1. 快速上手Git

    本文主要摘录于廖雪峰的Git教程,个别地方做了可能不恰当的修改或补充,主要方便自己回顾.查看更详细内容请移步廖老师博客.同时,感谢廖老师写出这么好的入门指导. (有彩蛋!!!) 一.热身 1.初始化一 ...

  2. Git快速上手 : Tortoise工具使用

    利用工具快速上手Git 别跟我说什么用命令操作Git,多高大上呀,请不要在这里跟我装逼,就如同,有个小妞在床上眉眼诱惑地,你却TM还要先看个片儿来热热身.... TortoiseGit  名字看着眼熟 ...

  3. Git版本控制Windows版快速上手

    说到版本控制,之前用过VSS,SVN,Git接触不久,感觉用着还行.写篇博文给大家分享一下使用Git的小经验,让大家对Git快速上手. 说白了Git就是一个控制版本的工具,其实没想象中的那么复杂,咱在 ...

  4. 学习Git---20分钟git快速上手

    学习Git-----20分钟git快速上手  在Git如日中天的今天,不懂git都不好意思跟人说自己是程序猿.你是不是早就跃跃欲试了,只是苦于没有借口(契机). 好吧,机会就在今天. 给我20分钟,是 ...

  5. Rancher 快速上手指南操作(1)

    Rancher 快速上手指南操作(1)该指南知道用户如何快速的部署Rancher Server 管理容器.前提是假设你的机器已经安装好docker了.1 确认 docker 的版本,下面是 ubunt ...

  6. Linux的压缩解压命令快速上手——解压篇

    在Linux系统中,压缩文件通常是先将若干文件(包括目录)打包成一个tar文件,然后再调用压缩程序将tar文件压缩成相应的压缩包,这也就是为什么Linux系的压缩包的后缀通常都是像tar.gz,tar ...

  7. 使用SSH快速下载Git项目

    文章首发于[博客园-陈树义],点击跳转到原文使用SSH快速下载Git项目. Git下载项目的几种方式 Git是常用的代码版本技术,而GitLab则是开源的Git版本管理软件,GitLab是最受欢迎的版 ...

  8. [转]Rancher 快速上手指南操作(1)

    本文转自:http://www.cppblog.com/zhiyewang/archive/2016/03/17/213053.aspx Rancher 快速上手指南操作(1)该指南知道用户如何快速的 ...

  9. Requests快速上手

    发送请求 使用 Requests 发送网络请求非常简单. 一开始要导入 Requests 模块: >>> import requests 然后,尝试获取某个网页.本例子中,我们来获取 ...

随机推荐

  1. CentOS服务器的网络配置与部署

    1.系统安装与软件安装 1.1选择CentOs7.9release版本用作所研发系统部署服务器,官网以及所选择镜像为地址为:http://ftp.sjtu.edu.cn/centos/7.9.2009 ...

  2. Swift-Framework(一)访问资源文件

    摘要 Framework 就是在 APP 应用中的一种封装功能的表现形式,虽然不能独立运行,但是也可以在它里面存放和访问图片.语音等资源文件,可算是麻雀虽小,五脏俱全. 毕竟不是 APP 工程,所以 ...

  3. MySQL:由于找不到VCRUNTIME140_1.dll,无法继续执行代码。重新安装程序可能会解决此问题

    我只是搬用工,记录一下 方法一: 安装这个微软常用运行库合集(https://www.repaik.com/), 链接:https://pan.baidu.com/s/1r4JJaUKjw-y1g3l ...

  4. 大一C语言学习笔记(8)---指针篇--动态内存是什么?与静态内存有什么区别?怎么使用动态内存,有什么需要注意的地方?

    静态内存指的是在编译时系统自动给其分配的内存,运行结束后会自动释放:静态内存是在栈中分配的: 动态内存是我们程序员手动分配的内存,正常情况下,程序运行结束后,也不会自动释放,所以为了避免发生未知的错误 ...

  5. SpringCloud升级之路2020.0.x版-34.验证重试配置正确性(3)

    本系列代码地址:https://github.com/JoJoTec/spring-cloud-parent 我们继续上一节针对我们的重试进行测试 验证针对可重试的方法响应超时异常重试正确 我们可以通 ...

  6. cmd 命令 导出导入oracle数据库 的 表

    原地址:https://www.cnblogs.com/mysterious-killer/p/11671741.html (防止) 导出: 不要数据的:exp username/pwd@localh ...

  7. Python 爬取 豆瓣

    ... import urllib.request import time from bs4 import BeautifulSoup def url_open(url): response = ur ...

  8. Unity Ioc 类型初始值设定项引发异常,The type name or alias SqlServer could not be resolved. Please check your configuration file and verify this type name.

    先看一下unity的配置信息 <unity> <typeAliases> <typeAlias alias="IDatabase" type=&quo ...

  9. [loj3076]公园

    为了方便,对题意做以下处理: 1.称"西部主题"和"科幻主题"分别为黑色和白色 2.删去题中"保证没有两条不同的道路连接同一对景点"的条件 ...

  10. [hdu6715]算术

    首先要知道一个式子:$\mu(lcm(i,j))=\mu(i)\cdot \mu(j)\cdot \mu(gcd(i,j))$(分是否为0讨论)令$d=gcd(i,j)$,$n'=\lfloor n/ ...