简单记录,整理。

摘要

为方便大家快速上手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. OpenXml SDK学习笔记(4):设置文件级别的样式

    观察上一段日记最后的代码: 这里的样式基本可以理解为行内CSS.那么既然有行内的样式,就肯定有外部的样式.那这部分就对应笔记1里说的style.xml文件.这个文件对应的是Document.MainD ...

  2. 【机器学习基础】关于深度学习的Tips

    继续回到神经网络章节,上次只对模型进行了简要的介绍,以及做了一个Hello World的练习,这节主要是对当我们结果不好时具体该去做些什么呢?本节就总结一些在深度学习中一些基本的解决问题的办法. 为什 ...

  3. 问题 Q: 最大的数

    题目描述 小明和小红在打赌说自己数学学的好,于是小花就给他们出题了,考考他们谁NB,题目是这样的给你N个数 在这n个数之间添加N-1个*或+,使结果最大,但不可以打乱原顺序,请得出这个结果 如 1 3 ...

  4. 使用Typora+PicGo配置Gitee图床

    1.图床痛点 通常我们用 Typora 写 Markdown 文档,对于文档里面的图片,如果不使用图床,图片都是存放在本地,如果把文档复制到别的地方,还得额外复制图片,特别麻烦. 为了解决这种问题,一 ...

  5. Android学习—下载Android SDK的两种方式

    在Android Studio中下载Android SDK的两种方式 Android studio下载地址:http://www.android-studio.org/ 方式一.设置HTTP Prox ...

  6. URL URI傻傻分不清楚,dart告诉你该怎么用

    目录 简介 dart中的URI encode和decode 解析URI 总结 简介 如果我们要访问一个网站,需要知道这个网站的地址,网站的地址一般被称为URL,他的全称是Uniform Resourc ...

  7. 2017Java前景怎么样?

    当今社会互联网软件行业属于高薪技术行业,伴随着互联网的发展Java在Web领域的优势也日渐凸显,并且java语言本身就应用最广泛,最高效.据说,全球有25亿Java器件运行着Java,450多万Jav ...

  8. AT2558 [ARC073D] Many Moves

    开始被标签带骗了. 考虑一个\(dp\),\(f[i][j]\)代表有一个棋子在\(x_i\),另外一个\(j\)的最小答案. 那么考虑转移. 如果\(j != x_{i - 1}\) 那么答案自然贡 ...

  9. 洛谷 P6199 - [EER1]河童重工(点分治+虚树)

    洛谷题面传送门 神仙题. 首先看到这样两棵树的题目,我们肯定会往动态树分治的方向考虑.考虑每次找出 \(T_2\) 的重心进行点分治.然后考虑跨过分治中心的点对之间的连边情况.由于连边边权与两棵树都有 ...

  10. P7708「Wdsr-2.7」八云蓝自动机 Ⅰ

    *X. P7708「Wdsr-2.7」八云蓝自动机 Ⅰ. 摘自 分治与根号数据结构学习笔记 第三部分 莫队 例题 X.. 一道莫队好题.私以为本题最有价值的地方在于对单点修改的转化以及对交换两个数的处 ...