简单记录,整理。
摘要
为方便大家快速上手Git,并使用Gitlab协同合作,特编写此手册,手册内容不会太丰富与深入。
主要包含如下内容:
- Git 使用教程
1.1 安装
1.2 常用命令
1.3 版本控制
1.4 分支与tag - Gitlab 使用教程
2.1 界面简介
2.2 常用功能介绍
2.3 注意事项 - 多人协作流程与规范
3.1 永久与临时分支
3.2 工作流图
3.3 规范 - Code Review
4.1 为什么要有Code Review
4.2 如何进行? - 参考资料
后续会加入CI,自动部署等。
1. git 使用教程
1.1 安装
建议安装最新版本,及1.7以上。
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
更多命令请参考:
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 规范
约定:
- master分支中的任何版本都可以立即部署
- 每次master变更都来自其它分支的master合并操作
- 对master修改必须要有review
- 不允许存在奇数版本
4. code review
4.1 为什么要有code review
不觉明厉
4.2 如何进行?
- 建议在gitlab界面进行
- 提交代码时需要注册分支及版本号
- 使用本地git flow 进行合并操作