zsy001 发表于 2018-1-11 10:24:28

快速上手git gitlab协同合作

  简单记录,整理。
摘要
  为方便大家快速上手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以上。
  下载地址: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 规范
  约定:

[*]master分支中的任何版本都可以立即部署
[*]每次master变更都来自其它分支的master合并操作
[*]对master修改必须要有review
[*]不允许存在奇数版本
4. code review
4.1 为什么要有code review
  不觉明厉
4.2 如何进行?

[*]建议在gitlab界面进行
[*]提交代码时需要注册分支及版本号
[*]使用本地git flow 进行合并操作
5. 参考资料
  Github-flow
  Git_Gitlab
页: [1]
查看完整版本: 快速上手git gitlab协同合作