Git使用操作规范

2023-11-08

一、创建自己的开发分支

1.1 配置Git环境

1.1.1 Windows平台上安装

1.1.2 Linux平台上安装

1.1.3 Mac平台上安装

1.1.4 基本概念名词解释

  1. Git 工作区、暂存区和版本库

    • **工作区:**就是你在电脑里能看到的目录。

    • **暂存区:**英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。

    • **版本库:**工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。

       

       

1.2 添加本机sshkey到gitlab(可选)

1.3 克隆远程仓库中文件到本地

克隆一定要遵守Git开发规范,严禁克隆master分支。git clone 命令只用于第一次创建工程使用.

1.3.1 命令格式

克隆仓库的命令格式为:

git clone -b <branch> <url>

如果我们需要克隆到指定的目录,可以使用以下命令格式:

git clone -b <branch> <url> <directory>

参数说明:

  • **branch:**分支的名称,严禁克隆master/main分支。
  • **url:**Git 仓库地址。
  • **directory:**本地目录,只有此目录不存在或者是空文件夹时,才允许克隆。

1.3.2 命令示例

# 从develop分支克隆项目文件到本地demo4文件夹 git clone -b develop http://10.10.10.100/chenchu/demo1.git demo4

1.3.3 创建本地分支 

当develop分支克隆完成后,就应该按照您对分支的开发类型进行创建本地分支进行开发。

# 对克隆下来的项目进行本地新分支命名 git checkout -b feature/demo_readme

 1.3.4 分支命名规范

功能分支以 feature/ 开头, 如 feature/download_module, feature/control_module;

修复bug分支以fix/ 开头,如 fix/login_module,fix/login_module。

此时,我们的开发环境已经就绪,可以进入开发环节。

二、开发分支的提交规范

2.1 commit message提交规范

团队开发中,遵循一个合理、清晰的Git使用流程,是非常重要的。否则,每个人都提交一堆杂乱无章的commit,项目很快就会变得难以协调和维护。当我们对一个功能开发到一个阶段需要进行commit操作的时候,commit message( 提交说明 )的提交需遵循描述规范,严禁随意描述。

2.1.1 Commit message 组成部分

每次提交,Commit message 都包括三个部分:HeaderBody 和 Footer,其中,Header 是必需的,Body 和 Footer 可以省略。

<type>(<scope>): <subject> // 空一行 <body> // 空一行 <footer>

不管是哪一个部分,任何一行都不要有太多字符。这是为了避免自动换行影响美观。

**Header:**Header部分只有一行,包括三个字段:type(必填)、scope(影响范围,选填)和subject(必填)。

**Body:**Body 部分是对本次 commit 的详细描述,可以分成多行,每行尽量不超过72个字符。

**Footer:**Footer 部分只用于两种情况,不兼容变动、关闭Issue。

2.2.2 规范格式:

<type>(<scope>):<subject>  # 例如: git commit -m "docs:update README.md"

 Type: 必选项,用于描述本次commit更改类型,只允许使用下列7个标识,类型后使用英文冒号+空格:。

  • 推荐:同类型多个内容以逗号,分隔,不同类型的提交内容可通过'; '格式进行区分提交(建议按照同一类型进行多次提交)。

    示例:

    单个类型提交:feat: 新增登录、注册、账号查询功能,新增密码修改功能

    多个类型提交:feat: 新增登录功能;fix: 修复登录异常bug

    序号 类型 说明
    1 feat 新功能
    2 fix 修补bug
    3 docs 修改文档
    4 style 格式化代码结构,没有逻辑上的代码修改
    5 refactor 重构,即不是新增功能,也不是修改bug的代码变动,比如重命名变量
    6 test 增加测试代码,单元测试一类的,没有生产代码的变更
    7 chore 构建过程或辅助工具的变动(不会影响代码运行)
  • **Scope:**可选项,用于描述程序开发影响的范围,比如数据层,控制层,视图层等等。示例描述词汇: Init,runner,watcher, config,web-server,proxy,etc等等,没有标准的描述标识。

  • **Subject:**必选项,是对commit的简短描述,不超过50个字符。以动词开头,使用第一人称现在时,第一个字母小写、结尾不加句号(中英文都不可以)。

2.2.3 标准化Commit message的好处

  • 提供更多的历史信息,方便快速浏览;
  • 可以过滤某些commit(比如文档改动),便于快速查找信息;
  • 可以直接从 commit 生成 Change log(Change Log 是发布新版本时,用来说明与上一个版本差异的文档)

2.2 分支的提交

2.2.1 查看当前所在分支

当我们不清楚自己分支名字的时候我们可以用git branch命令进行查看,带星号的就是当前分支。

git branch

2.2.2 Push本地开发分支到远程仓库

push之前一定要pull。

git pull branch_name

git push origin feature/demo_readme #Push本地开发分支到远程仓库

2.2.3 查看远程仓库分支

当我们成功使用push操作之后,我们将可以在GitLab上看到我们刚push上去的分支。

2.4 发起合并请求

当一个功能分支已经进入到开发完成的阶段,这时候我们就应该要发起与develop分支的合并请求了。

合并分支的流程:

2.4.1 登录 Gitlab 找到 Merge Request(合并请求)

2.4.2 新建合并请求

2.4.3 选择需要发起合并的分支

选择完成后点击Compare branches and continue

在项目开发阶段,原则上,开发人员只允许选择发起合并到develop分支的请求。

未经项目负责人同意严禁对master分支发起合并请求。

2.4.4 添加对合并请求的描述,并发起合并请求

当我们点击 Compare branches and continue 后将会打开对发起合并请求的描述页面。

**Title **的描述将会显示在Merge Request的列表中,对于Title的描述填写应该做到简单明了,让审核人能迅速的读懂您的请求含义。

**Description **是对发起请求的详细描述,对于这个描述内容目前还没有标准的规范,但也应该做到描述思路清晰,不要添加和请求合并描述无关紧要的语句。

当我们将所有信息确认无误的填写完毕后,单击最页面最底下的 Create merge request( Create 合并请求 ) 用于提交分支请求。

2.4.5 关闭错误的合并请求

三、分支的管理与结构

  • 自己的分支一定要自测,切记不要提交后,影响到其他代码,更别说别人拉下代码还报错这种低级错误;
  • 本地分支要做到勤提交,分小功能提交,一次提交一大堆各种功能的做法也要杜绝;
  • 每天第一件事就是更新 develop 分支内容到本地分支,避免大规模 merge,太容易出错了;
  • 迭代新版本时,一定要保证当前开发分支和线上分支一样;

3.1 分支的结构

3.2 新分支的创建

当一个功能开发完毕并提交合并请求并成功合并之后并要进行下一阶段的开发工作时,我们应严格遵守开发规范,与develop分支同步后再进行开发。但不赞成使用git clone命令重新进行新建工作区来进行新功能的开发。对于下一个新功能的开发我们应该在原工作区使用以下命令进行操作:

3.3 设置默认分支

3.4 分支的保护

用户拥有不同的权限,具体取决于他们在特定组或项目中的角色。

系统中五种角色分别是:Guest -- Reporter -- Developer -- Maintainer -- Owner

3.3.1 角色权限

初始状态下,整个项目应该至少具备 main分支和develop分支,对于他们的权限和管理应遵循以下原则。详细的角色可以用权限请参考:Permissions · User · 帮助 · GitLab

3.3.2 分支的保护设置(适用于项目管理员)

受保护的分支为main和develop分支;

master分支的所有操作权限应该仅由项目管理员拥有;

而develop分支的只有merge权限可以开发给开发者,并且merge请求须有对应的项目管理员审核后才能成功。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Git使用操作规范 的相关文章

随机推荐

  • 一次Binder通信最大可以传输多大的数据?

    前言 在第六章中 我通过匿名共享内存的方式解决Binder通信是无法传递大数据的问题 一次Binder通信最大可以传输是1MB 8KB PS 8k是两个pagesize 一个pagesize是申请物理内存的最小单元 但是这个答案对不对呢 我
  • Qt编程遇到的typedef

    一 主要用法 1 定义一种类型的别名 typedef char Pchar 那么char a等价于Pchar a 用typedef定义变量别名的好处在于如果遇到不同平台对数据类型的不同支持 可以只在typedef定义处进行修改 2 方便结构
  • pkg-config 用法简介

    pkg config 用法简介 当我们写代码时 经常会调用第三方的库 这些第三方的库的安装路径在每台电脑上可能都会不同 所以如果我们把这些库的路径写死 那么别人拿到我们的代码编译时就会遇到各种问题 为了解决这个问题 就有了 pkg conf
  • Oracle 11g 下载及安装教程

    下载Oracle 11g R2 for Windows版本 官网的下载地址 Oracle 1of 2 Oracle 2of 2 但是亲测该服务器为美国服务器 下载速度简直不要太难受 因此附上网盘链接 Oracle百度网盘下载地址 点击自动跳
  • Spring MVC 教程,快速入门,深入分析

    资源下载 Spring MVC 教程 快速入门 深入分析V1 1 pdf SpringMVC核心配置文件示例 rar 作者 赵磊 博客 http elf8848 iteye com 目录 一 前言 二 spring mvc 核心类与接口 三
  • TP5 Fatal error: Class 'think\Route' not found

    1 使用验证码了时 使用Composer安装think captcha扩展包 composer require topthink think captcha 报错 Fatal error Class Route not found in D
  • Java实现在线打开编辑保存PPT

    项目中有时会需要在线打开PPT并编辑保存 pageoffice可以完美调用本地office在线打开ppt文件 跟本地打开效果一样 还可以在线打开word excel pdf等文件 在线办公系统需要用到的功能基本都可以实现 效果还是挺不错的
  • 知乎搬运副业项目,适合新手的创业项目

    今天刷抖音发现一个账号 主要写知乎故事的 只有4个作品 涨粉700多 点赞2600 在抖音上搜索了一下 发现有一些类似的账号 作品不多 但涨粉蛮快的 看来这种账号蛮受大家欢迎的 是个不错的网络创业项目 经朋友分析测试 找知乎热门故事做素材涨
  • Android-Tangram模型:淘宝、天猫都在用的UI框架模型你一定要懂

    3 应用场景 常规业务 中 复杂的布局格式混排 如 浮动布局 栏格布局 通栏布局 一拖N布局 瀑布流布局 还可以组合使用这些布局 具体场景是 如电商平台首页 活动频道等等 Tangram 模型目前已在手机天猫 淘宝 Android 版内广泛
  • org.apache.hadoop.hive.metastore.HiveMetaException: Schema initialization FAILED! Metastore state wo

    90 的hive数据库初始化失败的原因都是配置文件没整明白 咱们可以看看hive env sh template 这句话的意思是 lt 警告 这个文件是自动生成的 只用于文档的目的 gt lt 警告 你对这个文件所做的任何修改都将被Hive
  • VCSA服务重启命令

    Sphere Web Client界面的服务分别是 vmware mbcs vmware netdumper vmware rbd watchdog 分别执行命令确认 首先执行命令 service control status vmware
  • python实现-逆波兰式-进阶-基本计算器

    作者 芝士小熊饼干 系列专栏 数据结构 蓝桥杯 算法 坚持天数 21天 逆波兰式 chat gpt分析 逆波兰表达式 Reverse Polish Notation RPN 也称为后缀表达式 是一种不需要括号来表示运算符优先级的数学表达式表
  • 【BingGPT对话记录】基于格的密码学简介

    格密码学是一种基于格 lattice 的数学结构的密码学分支 它具有抵抗量子计算攻击的特性 格是一个由线性无关向量生成的离散点集 可以用来描述许多复杂的几何和代数问题 格密码学的安全性通常建立在最坏情况下的难度假设上 即即使给定最优化算法
  • 4.Docker网络配置

    网络相关 IP 子网掩码 网关 DNS 端口号 子网掩码 互联网是由许多小型网络构成的 每个网络上都有许多主机 这样便构成了一个有层次的结构 IP 地址在设计时就考虑到地址分配的层次特点 将每个 IP 地址都分割成网络号和主机号两部分 以便
  • Java private方法访问

    大家知道 Java中private修饰符修饰的方法或属性 只有在该类内可以访问 其他类均无法访问 事实真的是这样吗 下面一个例子可以实现访问一个类中的private方法 原理是通过Java的反射机制 感觉Java反射机制在这点似乎不太安全
  • 手把手教你使用LabVIEW OpenCV dnn实现物体识别(Object Detection)含源码

    文章目录 前言 一 物体识别算法原理概述 1 物体识别的概念 2 Yolo算法原理概述 二 opencv调用darknet物体识别模型 yolov3 yolov4 1 darknet模型的获取 2 python调用darknet模型实现物体
  • 深度学习环境配置1——windows下的tensorflow-gpu=1.13.2环境配置

    深度学习环境配置1 windows下的tensorflow gpu 1 13 2环境配置 注意事项 一 2021 9 11更新 二 2021 7 8更新 三 2020 11 5更新 学习前言 环境内容 环境配置 一 Anaconda安装 1
  • Android - Session 'app': Error Installing APK或installaion failed intall_parse_failed_manifest_的解决方法

    在Android Studio中启动模拟器的时候偶尔会遇到以下的问题 1 installaion failed with message intall parse failed manifest malformed 2 Session ap
  • 【Linux:进程间信号】

    文章目录 1 生活角度的信号 2 技术应用角度的信号 3 信号的产生 3 1 由系统调用向进程发信号 3 1 1 signal 3 1 2 kill 3 1 3 raise 3 2 由软件条件产生信号 3 3 硬件异常产生信号 3 4 通过
  • Git使用操作规范

    一 创建自己的开发分支 1 1 配置Git环境 1 1 1 Windows平台上安装 1 1 2 Linux平台上安装 1 1 3 Mac平台上安装 1 1 4 基本概念名词解释 Git 工作区 暂存区和版本库 工作区 就是你在电脑里能看到