极狐GitLab 分支管理功能介绍

极狐GitLab 是 GitLab 在中国的发行版,关于中文参考文档和资料有:

  • 极狐GitLab 中文文档
  • 极狐GitLab 中文论坛
  • 极狐GitLab 官网

分支 (BASIC ALL)

分支是项目工作树的一个版本。分支是项目开发的基础。当你创建一个新的项目时,极狐GitLab 会为你的仓库创建一个默认分支。默认分支设置可以在项目、子组、组或实例中配置。

随着项目的增长,团队会创建更多的分支。每个分支代表一组更改,这允许并行进行开发工作。一个分支中的开发工作不会影响另一个分支。

分支的开发工作流程是:

1.创建一个分支并向其添加提交。为了简化这个过程,你应该遵循分支命名模式。
2.当工作准备好进行审查时,创建一个合并请求以提议将分支中的更改合并。
3.使用审查应用预览更改。

4.请求审查。
5.在你的合并请求获得批准后,将你的分支合并到源分支。合并请求的合并方法决定了项目中如何处理合并请求。
6.在分支内容合并后,删除已合并的分支。

查看所有分支

要在极狐GitLab 用户界面中查看和管理分支:

1.在左侧边栏中,选择 搜索或转到 并找到你的项目。
2.在左侧边栏中,选择 代码 > 分支

在此页面,你可以:

  • 查看所有分支,或筛选以仅查看活跃或过时的分支。

  • 如果在过去三个月内对分支进行了提交,则该分支被视为活跃分支。否则,它被视为过时分支。

  • 创建新分支。

  • 比较分支。

  • 删除已合并的分支。

  • 查看指向默认分支的合并请求链接。
    指向非默认分支的合并请求的分支会显示 {merge-request} 新建 合并请求按钮。

  • 查看分支规则。

  • 查看分支的最新流水线状态。

创建分支

在极狐GitLab UI 中创建新分支

前提条件:

  • 你必须至少拥有项目的开发者角色。

要从极狐GitLab UI 创建新分支:

1.在左侧边栏中,选择 搜索或转到 并找到你的项目。
2.选择 代码 > 分支
3.在右上角,选择 新建分支
4.输入 分支名称
5.在 创建自 中,选择分支的基础:现有分支、现有标签或提交 SHA
6.选择 创建分支

在空白项目中

一个空白项目不包含分支,但你可以添加一个。

前提条件:

  • 你必须至少拥有项目的开发者角色。
  • 如果你没有维护者或所有者角色,默认分支保护必须设置为部分保护或不保护,以便你可以向默认分支推送提交。

要向空白项目添加默认分支:

1.在左侧边栏中,选择 搜索或转到 并找到你的项目。
2.滚动到 此项目的存储库为空 并选择你想要添加的文件类型。
3.在 Web IDE 中,对该文件进行任何所需的更改,然后选择 创建提交。
4.输入提交消息,然后选择 提交

极狐GitLab 会创建一个默认分支并将你的文件添加到其中。

从议题创建分支

在查看议题时,你可以直接从该页面创建关联的分支。以这种方式创建的分支使用从议题中创建分支的默认命名模式,包括变量。

前提条件:

  • 你必须至少拥有项目的开发者角色。

要从议题中创建分支:

1.在左侧边栏中,选择 搜索或转到 并找到你的项目。
2.选择 计划 > 议题 并找到你的议题。
3.在议题描述下方,找到 创建合并请求 下拉列表,并选择 {chevron-down} 以显示下拉列表。
4.选择 创建分支。根据项目的默认命名模式,提供了一个默认的 分支名称。如果需要,输入不同的 分支名称
5.选择 创建分支 以基于项目的默认分支创建分支。

命名您的分支

Git 强制执行分支命名规则,以确保分支名称与其他工具兼容。极狐GitLab 增加了额外的分支命名要求,并为结构良好的分支名称提供了额外的好处。

极狐GitLab 对所有分支强制执行以下额外规则:

  • 分支名称中不允许有空格。
  • 禁止使用包含 40 个十六进制字符的分支名称,因为它们与 Git 提交哈希值相似。
  • 分支名称区分大小写。

常见的软件包(如 Docker)可能会强制执行额外的分支命名限制。

为了与其他软件包保持最佳兼容性,请仅使用:

  • 数字
  • 连字符 (-)
  • 下划线 (_)
  • ASCII 标准表中的小写字母

你可以在分支名称中使用正斜杠 (/) 和表情符号,但不能保证与其他软件包的兼容性。

具有特定格式的分支名称提供额外的好处:

  • 通过在分支名称前加上议题编号简化合并请求工作流程。
  • 根据分支名称自动化分支保护。
  • 在将分支推送到 GitLab 之前,使用推送规则测试分支名称。
  • 定义在合并请求上运行的CI/CD 作业。

配置从议题创建分支的默认模式

默认情况下,极狐GitLab 在从议题创建分支时使用模式 %{id}-%{title},但你可以更改此模式。

前提条件:

  • 你必须至少拥有项目的维护者角色。

要更改从议题创建分支的默认模式:

1.在左侧边栏中,选择 搜索或转到 并找到你的项目。
2.选择 设置 > 仓库
3.展开 分支默认值
4.滚动到 分支名称模板 并输入一个值。该字段支持以下变量:

  • %{id}:议题的数字 ID。

  • %{title}:议题的标题,修改为仅使用 Git 分支名称中可接受的字符。

5.选择 保存更改

在分支名称前加上议题编号

为了简化合并请求的创建,请以议题编号开头命名 Git 分支名称,后跟连字符。

例如,要将分支链接到议题 #123,请以 123- 开头命名分支。
议题和分支必须在同一个项目中。

极狐GitLab 使用议题编号将数据导入合并请求:

  • 议题被标记为与合并请求相关。议题和合并请求显示相互链接。
  • 分支连接到议题。
  • 如果你的项目配置了默认关闭模式,合并合并请求时也会关闭相关议题。
  • 如果合并请求在同一个项目中,而不是一个分叉,议题的里程碑和标签会被复制到合并请求中。

管理和保护分支

极狐GitLab 提供多种方法来保护各个分支。这些方法确保您的分支从创建到删除都能得到监督和质量检查。要查看和编辑分支保护,请参阅分支规则。

比较分支

要比较存储库中的分支:

1.在左侧边栏中,选择 搜索或转到 并找到你的项目。
2.选择 代码 > 比较修订
3.选择 分支以搜索所需的分支。精确匹配优先显示。您可以使用以下运算符来优化搜索:

  • ^ 匹配分支名称的开头:^feat 匹配 feat/user-authentication

  • $ 匹配分支名称的结尾:widget$ 匹配 feat/search-box-widget

  • *使用通配符匹配 :branch*cache* 匹配 fix/branch-search-cache-expiration

  • 您可以组合运算符:^chore/*migration$ 匹配 chore/user-data-migration

4.选择 目标 存储库和分支。精确匹配优先显示。
5.在 显示更改 下,选择比较分支的方法:

  • 仅显示源分支的传入更改(默认)显示自两个分支的最新共同提交以来源分支的差异。它不包括源分支创建后对目标分支进行的无关更改。此方法使用 git diff <from>...<to> Git 命令。为了比较分支,此方法使用合并基而不是实际提交,因此从 cherry-pick 的提交中更改会显示为新更改。

  • 包括源分支创建以来对目标分支的更改 显示两个分支之间的所有差异。此方法使用 git diff <from> <to> Git 命令。

6.选择 比较 以显示提交列表和更改的文件。
7.可选。要反转 目标,选择 交换修订({substitute})

删除已合并的分支

如果已合并的分支满足以下所有条件,则可以批量删除:

  • 它们不是受保护的分支。
  • 它们已合并到项目的默认分支。

前提条件:

  • 您必须至少拥有项目的开发者角色。

操作步骤:

1.在左侧边栏中,选择 搜索或转到 并找到你的项目。
2.选择 代码 > 分支
3.在页面右上角,选择 更多 {ellipsis_v}
4.选择 删除已合并的分支
5.在对话框中,输入单词 delete 以确认,然后选择 删除已合并的分支

注意:删除分支不会完全擦除所有相关数据。某些信息会保留以维护项目历史记录并支持恢复过程。有关更多信息,请参阅处理敏感信息。

为目标分支配置工作流 (PREMIUM ALL)

  • 在 GitLab 16.4 中引入,带有名为 target_branch_rules_flag 的标志。默认启用。
  • 在 GitLab 16.7 中移除功能标志。

一些项目使用多个长期分支进行开发,如 developqa
在这些项目中,你可能希望将 main 保持为默认分支,但希望合并请求目标指向 developqa。目标分支工作流有助于确保合并请求针对项目的适当开发分支。

当你创建合并请求时,工作流会检查分支名称。如果分支名称与工作流匹配,合并请求将针对你指定的分支。如果分支名称不匹配,合并请求将针对项目的默认分支。

规则按“首次匹配”原则处理 - 如果两个规则匹配同一个分支名称,则应用最上面的规则。

前提条件:

  • 你必须至少拥有维护者角色。

要创建目标分支工作流:

1.在左侧边栏中,选择 搜索或转到 并找到你的项目。
2.选择 设置 > 合并请求
3.向下滚动到 合并请求分支工作流
4.选择 添加分支目标。
5.对于 分支名称模式,提供一个字符串或通配符以与分支名称进行比较。
6.选择 目标分支,当分支名称与 分支名称模式 匹配时使用。
7.选择 保存

目标分支工作流示例

你可以将项目配置为具有以下目标分支工作流:

分支名称模式目标分支
feature/*develop
bug/*develop
release/*main

这些目标分支简化了为项目创建合并请求的过程,该项目:

  • 使用 main 表示应用程序的已部署状态。
  • 在另一个长期运行的分支(如 develop)中跟踪当前未发布的开发工作。

如果你的工作流最初将新功能放在 develop 而不是 main 中,这些目标分支确保所有匹配 feature/*bug/* 的分支不会错误地针对 main
当你准备发布到 main 时,创建一个名为 release/* 的分支,并确保该分支针对 main

删除目标分支工作流

当你删除目标分支工作流时,现有的合并请求保持不变。
前提条件:

  • 你必须至少拥有维护者角色。

操作步骤:

1.在左侧边栏中,选择 搜索或转到 并找到你的项目。
2.选择 设置 > 合并请求。
3.在你要删除的分支目标上选择 删除。

故障排除

包含相同提交的多个分支
从更深的技术层面来看,Git 分支不是独立的实体,而是附加到一组提交 SHA 的标签。当极狐GitLab 确定分支是否已合并时,它会检查目标分支是否存在这些提交 SHA。
这种行为可能会在两个合并请求包含相同提交时导致意外结果。在此示例中,分支 B 和 C 都从分支 A 的相同提交 (3) 开始:
在这里插入图片描述

如果你合并分支 B,分支 A 也会显示为已合并(无需任何操作),因为分支 A 的所有提交现在都出现在目标分支 main 中。分支 C 仍然未合并,因为提交 5 不是分支 A 或 B 的一部分。

合并请求 A 保持合并状态,即使你尝试将新提交推送到其分支。如果合并请求 A 中的任何更改未合并(因为它们不是合并请求 A 的一部分),请为它们打开一个新的合并请求。

错误:存在歧义的 HEAD 分支

在 2.16.0 之前的 Git 版本中,你可以创建一个名为 HEAD 的分支。
这个名为 HEAD 的分支与 Git 用于描述活动(已检出)分支的内部引用(也名为 HEAD)发生冲突。此命名冲突可能会阻止你更新存储库的默认分支:

Error: Could not set the default branch. Do you have a branch named 'HEAD' in your repository?

要解决此问题:

1.在左侧边栏中,选择 搜索或转到 并找到你的项目。
2.选择 代码 > 分支
3.搜索名为 HEAD 的分支。
4.确保该分支没有未提交的更改。
5.选择 删除分支,然后选择 ,删除分支。

Git 版本 2.16.0 及更高版本,防止你创建具有此名称的分支。

查找你创建的所有分支

要在项目中查找你创建的所有分支,请在 Git 存储库中运行此命令:

git for-each-ref --format='%(authoremail) %(refname:short)' | grep $(git config --get user.email)

要获取项目中所有分支的总数,并按作者排序,请在 Git 存储库中运行此命令:

git for-each-ref --format='%(authoremail)'  | sort | uniq -c | sort -g

错误:Failed to create branch 4:Deadline Exceeded

此错误是由 Gitaly 中的超时引起的。当创建分支所需时间超过配置的超时时间时,会发生此错误。
要解决此问题,请选择以下方法之一:

  • 禁用耗时的服务器钩子。请参阅 Git 服务器钩子。
  • 增加 Gitaly 的超时设置。请参阅 Gitaly 超时。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/79751.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/79751.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于ASP.NET+MySQL实现待办任务清单系统

基于ASP.NET的ToDoList的设计与实现 一、前言 1.1 实验目的 使学生综合使用所学过的ASP.NET网络编程知识&#xff0c;掌握网络环境程序设计的基本概念&#xff1b;结合实际的操作和设计&#xff0c;巩固课堂学习内容&#xff0c;掌握网络环境编程的特点、原理和技术&#xf…

普通 html 项目引入 tailwindcss

项目根目录安装依赖 npm install -D tailwindcss3 postcss autoprefixer 初始化生成tailwind.config.js npx tailwindcss init 修改tailwind.config.js /** type {import(tailwindcss).Config} */ module.exports {content: ["./index.html"], //根据自己的项目…

汽车免拆诊断案例 | 2015款奔驰C200L车发动机起动延迟

故障现象  一辆2015款奔驰C200L车&#xff0c;搭载274发动机&#xff0c;累计行驶里程约为15.6万km。该车发动机起动延迟&#xff0c;且发动机故障灯异常点亮。 故障诊断  用故障检测仪检测&#xff0c;发动机控制单元中存储有故障代码“P001685 进气凸轮轴&#xff08;气缸…

[蓝桥杯 2025 省 B] 水质检测(暴力 )

暴力暴力 菜鸟第一次写题解&#xff0c;多多包涵&#xff01;&#xff01;! 这个题目的数据量很小&#xff0c;所以没必要去使用bfs&#xff0c;直接分情况讨论即可 一共两排数据&#xff0c;我们使用贪心的思想&#xff0c;只需要实现从左往右的过程中每个检测器相互连接即…

网络接口返回类ResponseEntity

网络接口返回类ResponseEntity 简介方法获取工厂方法ResponseEntity.ok()返回BodyBuilder返回文字信息返回类对象&#xff08;Spring自动转换为json格式&#xff09;返回空内容‌ ResponseEntity.notFound()返回HeadersBuilder返回文字信息 status(HttpStatus)返回BodyBuildern…

Redis:现代服务端开发的缓存基石与电商实践-优雅草卓伊凡

Redis&#xff1a;现代服务端开发的缓存基石与电商实践-优雅草卓伊凡 一、Redis的本质与核心价值 1.1 Redis的技术定位 Redis&#xff08;Remote Dictionary Server&#xff09;是一个开源的内存数据结构存储系统&#xff0c;由Salvatore Sanfilippo于2009年创建。它不同于传…

macOS上管理多个Node.js版本

管理工具 fnm 和 nvm nvm&#xff1a;作为最广泛使用的 Node.js 版本管理器&#xff0c;使用 Bash 编写&#xff0c;适用于类 UNIX 环境(如 macOS 和 Linux)&#xff0c;也可以通过兼容的 shell(如 WSL)在 Windows 上使用。fnm&#xff1a;(Fast Node Manager)一种较新的、快速…

uDistil-Whisper:低数据场景下基于无标签数据过滤的知识蒸馏方法

uDistil-Whisper: Label-Free Data Filtering for Knowledge Distillation in Low-Data Regimes 会议&#xff1a;2025年NAACL 机构&#xff1a;卡内基梅降大学 Abstract 近期研究通过伪标签&#xff08;pseudo-labels&#xff09;将Whisper的知识蒸馏到小模型中&#xff0…

【MySQL】-- 数据库约束

文章目录 1. 什么是数据库约束2. 约束类型3. NOT NULL 非空约束4. DEFALUT 默认值约束5. UNIQUE 唯一约束6. PRIMARY KEY 主键约束6.1 自增主键6.1 一个自增主键包含多个列 7. FOREIGN KEY 外键约束8. CHECK 约束 1. 什么是数据库约束 数据库约束是指对数据库表中的数据所施加…

鸿蒙NEXT开发动画案例2

1.创建空白项目 2.Page文件夹下面新建Spin.ets文件&#xff0c;代码如下&#xff1a; // 接口定义&#xff08;必须放在使用前&#xff09; /*** 关键帧动画整体配置参数*/ interface KeyframeAnimationConfig {iterations: number;delay: number; }/*** 单个关键帧动画项*/…

团队协作的润滑剂——GitHub与协作流程

各位代码界的社交恐惧症患者们&#xff0c;今天我们要聊的是如何假装自己很会团队协作——使用GitHub&#xff01;这就像程序员版的"相亲平台"&#xff0c;只不过在这里&#xff0c;你展示的不是自拍和收入&#xff0c;而是代码和commit记录&#xff08;后者往往更令…

「Mac畅玩AIGC与多模态13」开发篇09 - 基于多插件协同开发智能体应用(天气+名言查询助手)

一、概述 本篇介绍如何在 macOS 环境下&#xff0c;同时接入多个自定义 OpenAPI 插件&#xff0c;实现智能体根据用户请求自动分析&#xff0c;调用天气查询或名言查询服务&#xff0c;完成多功能协同应用开发。 二、环境准备 1. 确认本地开发环境 macOS 系统Dify 平台已部…

react-12父子组件间的数据传递(子传父)(父传子)- props实现

1.子组件调用父组件的函数并传递数据&#xff08;子传父&#xff09; 1.1父组件 import React, { Component } from react; import ChildComponent from ./ChildComponent;class ParentComponent extends Component {constructor(props) {super(props);this.state {items: […

Spring Boot 单元测试使用教程(仅供参考)

单元测试是软件开发中至关重要的一环&#xff0c;Spring Boot 提供了强大的测试支持。以下是 Spring Boot 单元测试的详细教程。 1. 准备工作 1.1 添加测试依赖 在 pom.xml 中添加测试相关依赖&#xff1a; <dependency><groupId>org.springframework.boot</…

React Hooks速成

1、useReducer 适用情况为对一个状态多种复杂操作,通俗的讲就是比如对count这个变量加减乘除的各种情况 改造前 import { useState } from "react";function App() {//计数器const [count, setCount] useState(0);const handleIncrement () > {setCount(coun…

k8s node 内存碎片化如何优化?

在 Kubernetes 集群中&#xff0c;内存碎片化&#xff08;Memory Fragmentation&#xff09;会导致系统无法分配连续的内存块&#xff0c;即使总内存充足&#xff0c;也可能触发 OOM&#xff08;Out of Memory&#xff09;或影响性能。以下是针对 k8s Node 内存碎片化的优化策略…

目标检测(Object Detection)研究方向常用数据集简单介绍

目录 一、目标检测研究方向简介 二、目标检测常用数据集详解 通用目标检测数据集 领域专用数据集 三、数据集选择建议 一、目标检测研究方向简介 目标检测是计算机视觉的核心任务之一&#xff0c;旨在从图像或视频中定位并识别出所有感兴趣的物体&#xff0c;输出其类别和…

即开即用,封装 Flask 项目为 exe 文件实操步骤

见字如面&#xff0c;朋友们&#xff01; 嗨&#xff0c;这里是 AIGC 创意人_竹相左边&#xff01; 正如你们所知&#xff0c;我正在通过 AI 自学软硬件工程师&#xff0c;目标是手搓一台可回收火箭玩具&#xff01; 最近&#xff0c;我被《流浪地球 2》中马兆的那句“没有硬…

uniapp开发微信小程序时如何进行分包(新手图文)

我们在进行uniapp微信小程序开发的时候&#xff0c;每次上传都提示包太大&#xff0c;主包大小不能超过 2M&#xff0c; 这就很头疼&#xff0c;这个时候&#xff0c;唯一的解决方案就是分包了&#xff0c;那如何进行分包呢&#xff1f; 分包步骤如下&#xff1a; 一、配置man…

基于C++的IOT网关和平台2:github项目ctGateway技术说明书

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C++的,可以在任何平台上使用。 源码指引:github源码指引_初级代码游戏的博客-CSDN博客 系…