极狐GitLab 是 GitLab 在中国的发行版,关于中文参考文档和资料有:
- 极狐GitLab 中文文档
- 极狐GitLab 中文论坛
- 极狐GitLab 官网
创建合并请求 (BASIC ALL)
GitLab 提供了多种不同的方式来创建合并请求,包括通过 使用 Git 命令。
NOTE:极狐GitLab 强制执行 分支命名规则 以防止出现问题,并提供 分支命名模式 来简化合并请求的创建。
从合并请求列表创建
你可以从合并请求列表中创建一个合并请求。
1.在左侧边栏,选择 搜索或前往 并找到你的项目。
2.选择 代码 > 合并请求。
3.在右上角,选择 新建合并请求。
4.选择源分支和目标分支,然后选择 比较分支并继续。
5.填写 新建合并请求 页面上的字段,然后选择 创建合并请求。
每个分支只能与一个打开的合并请求关联。如果该分支已经存在合并请求,将显示指向现有合并请求的链接。
从议题创建
如果您的开发工作流要求每个合并请求都有一个议题,您可以直接从议题创建分支,以加速这一过程。新的分支,稍后它的合并请求,将被标记为与该议题相关。合并请求合并后,议题会自动关闭,除非禁用自动关闭议题:
::Tabs
:::TabTitle 合并请求和分支
要同时创建分支和合并请求:
1.在左侧边栏中,选择 搜索或前往,然后找到您的项目。
2.选择 计划 > 议题,然后找到您的议题。
3.转到议题描述的底部。
4.选择 创建合并请求 > 创建合并请求和分支。
5.在对话框中,查看建议的分支名称。该名称基于您项目的分支名称模板。
6.可选:如果分支名称已被占用,或者您需要一个不同的分支名称,您可以重命名它。
7.选择源分支或标签。
8.选择 创建合并请求。
:::TabTitle 仅创建分支
仅从议题创建分支:
1.在左侧边栏中,选择 搜索或前往,然后找到您的项目。
2.选择 计划 > 议题,然后找到您的议题。
3.转到议题描述的底部。
4.选择 创建合并请求 > 创建分支。
5.在对话框中,查看建议的分支名称。该名称基于您项目的分支名称模板。如果分支名称已被占用,或者您需要一个不同的名称,可以重命名它。
6.选择源分支或标签。
7.选择 创建分支。
::EndTabs
如果您的 Git 仓库为空,GitLab 将会:
- 建一个默认分支。
- 提交一个空的 README.md 文件到该分支。
- 创建并将您重定向到一个基于议题标题的新分支。
- 如果您的项目配置了部署服务,例如 Kubernetes,GitLab 会提示您通过帮助创建 .gitlab-ci.yml 文件来设置自动部署。
如果您创建的分支名称以议题号为前缀,GitLab 会将该议题和合并请求交叉链接,并将议题关闭模式添加到合并请求的描述中。在大多数情况下,这看起来像 Closes #ID,其中 ID 是议题的 ID。如果您的项目配置了关闭模式,则当合并请求被合并时,议题会自动关闭。
从任务创建
- 引入于极狐GitLab 17.8。
如果您的团队将议题分解为任务,您可以直接从任务创建分支,以加速这一过程。新的分支,稍后它的合并请求,将被标记为与该任务相关。合并请求合并后,任务会自动关闭,除非禁用自动关闭议题:
前提条件:
- 您必须至少拥有该任务所在项目的开发者角色。
::Tabs
:::TabTitle 合并请求和分支
要同时创建分支和合并请求:
1.在左侧边栏中,选择 搜索或前往,然后找到您的项目。
2.选择 计划 > 议题。
3.在议题列表中,找到您的任务。
4.转到任务描述的底部。
5.选择 创建合并请求。
6.在对话框中,查看建议的分支名称。该名称基于您项目的分支名称模板。
7.可选:如果分支名称已被占用,或者您需要一个不同的分支名称,可以重命名它。
8.选择源分支或标签。
9.选择 创建合并请求。
:::TabTitle 仅创建分支
仅从任务创建分支:
1.在左侧边栏中,选择 搜索或前往,然后找到您的项目。
2.选择 计划 > 议题。
3.在议题列表中,找到您的任务。
4.转到任务描述的底部。
5.选择 创建合并请求 > 创建分支。
6.在对话框中,查看建议的分支名称。该名称基于您项目的分支名称模板。
7.可选:如果分支名称已被占用,或者您需要一个不同的分支名称,可以重命名它。
8.选择源分支或标签。
9.选择 创建分支。
::EndTabs
如果您的 Git 仓库为空,GitLab 将会:
- 创建一个默认分支。
- 提交一个空的 README.md 文件到该分支。
- 创建并将您重定向到一个基于任务标题的新分支。
- 如果您的项目配置了部署服务,例如 Kubernetes,GitLab 会提示您通过帮助创建 .gitlab-ci.yml 文件来设置自动部署。
如果您创建的分支名称以任务号为前缀,GitLab 会将该任务和合并请求交叉链接,并将关闭模式添加到合并请求的描述中。在大多数情况下,这看起来像 Closes #ID,其中 ID 是任务的 ID。如果您的项目配置了关闭模式,则当合并请求被合并时,任务会自动关闭。
当您添加、编辑或上传文件时
您可以在向仓库添加、编辑或上传文件时创建合并请求。
1.添加、编辑或上传文件到仓库。
2.在 提交信息 中,输入提交的原因。
3.选择 目标分支,或者通过输入分支名称来创建新分支。
4.选择 使用这些更改创建新的合并请求 复选框或切换按钮。仅当目标分支与源分支不同时,或源分支是受保护的时,此复选框或切换按钮才会显示。
5.选择 上传文件。
6.填写字段并选择 创建合并请求。
当您创建分支时
您可以在创建分支时创建合并请求。
1.在左侧边栏中,选择 搜索或前往,然后找到您的项目。
2.选择 代码 > 分支。
3.输入分支名称并选择 新建分支。
4.在文件列表上方,选择 创建合并请求。会创建一个合并请求,默认分支为目标分支。
5.填写字段并选择 创建合并请求。
当您在一个 Fork 中工作时
您可以从您的 Fork 创建合并请求,以贡献到主项目。
1.在左侧边栏中,选择 搜索或前往,然后找到您的 Fork。
2.选择 代码 > 合并请求,并选择 新建合并请求。
3.对于 源分支,选择您 Fork 中包含更改的分支。
4.对于 目标分支:
- 选择目标项目。(确保选择上游项目,而不是您的 Fork。)
- 从上游仓库中选择一个分支。
NOTE:如果您经常向上游项目贡献更改,建议为您的 Fork 设置一个默认目标项目。
5.选择 比较分支并继续。
6.选择 创建合并请求。合并请求将创建在目标项目中,而不是您的 Fork 中。
工作合并后,如果您不打算再做更多贡献,可以解除 Fork 与上游项目的关联。
更多信息,请参见分支工作流文档。
设置默认目标项目
默认情况下,从 Fork 创建的合并请求将目标设置为上游项目,而不是 Fork 的项目。
您可以将您的 Fork 项目配置为默认目标,而不是上游项目。
前提条件:
- 您在一个 Fork 中工作。
- 您必须至少拥有开发者角色,或者被允许在项目中创建合并请求。
- 上游项目允许创建合并请求。
- Fork 的可见性设置必须与上游仓库匹配,或者不严格于上游仓库。例 如:如果您的 Fork 是私有的,而上游是公开的,那么此设置不会显示。
操作步骤:
1.在左侧边栏中,选择 搜索或前往,然后找到您的项目。
2.选择 设置 > 合并请求。
3. 在 目标项目 部分,选择您希望用于默认目标项目的选项。
4.选择 保存更改。
通过发送电子邮件
您可以通过发送电子邮件到极狐GitLab 来创建合并请求。合并请求的目标分支是项目的默认分支。
前提条件:
- 合并请求必须针对当前项目,而不是上游项目。
- 必须由极狐GitLab 管理员配置 传入邮件。
- 必须由极狐GitLab 管理员配置 电子邮件回复。
- 您必须至少拥有开发者角色,或者被允许在项目中创建合并请求。
通过发送电子邮件创建合并请求的步骤:
1.在左侧边栏中,选择 搜索或前往,然后找到您的项目。
2.选择 代码 > 合并请求。
3.如果项目包含任何合并请求,选择 通过电子邮件向该项目发送新合并请求。
4.在对话框中,复制显示的电子邮件地址。请保密此地址。任何拥有该地址的人都可以像您一样创建问题或合并请求。
5.打开电子邮件并编写包含以下信息的邮件:
-
收件人 行是您复制的电子邮件地址。
-
主题 是源分支名称。
-
邮件正文是合并请求描述。
6.要添加提交,请将 .patch 文件附加到邮件中。
7.发送电子邮件。
8.合并请求已创建。
通过电子邮件创建合并请求时添加附件
通过将补丁作为附件添加到电子邮件中,可以将提交添加到合并请求。
- 补丁的总大小必须为 2 MB 或更小。
- 要被视为补丁,附件的文件名必须以 .patch 结尾。
- 补丁会按名称的顺序处理。
- 如果主题中的源分支不存在,则会从仓库的 HEAD 或默认目标分支创建它。要手动更改目标分支,请使用 /target_branch 快速操作。
- 如果源分支已存在,则补丁会应用到该分支之上。
故障排除
无法在问题上创建合并请求的选项
如果以下情况之一发生,问题上将不显示 创建合并请求 选项:
- 已经存在相同名称的分支。
- 已经存在针对该分支的合并请求。
- 您的项目存在活动的 Fork 关系。
- 您的项目是私有的,且问题是机密的。
要使此按钮显示,一个可能的解决方法是删除项目的 Fork 关系。删除后,无法恢复 Fork 关系。此项目将无法再从源项目或其他 Fork 接收或发送合并请求。
无法处理电子邮件消息
当您发送电子邮件以创建合并请求,并尝试将目标设为上游项目时,GitLab 会响应以下错误:
-
抱歉,您的电子邮件消息无法处理。
-
您不允许执行此操作。如果您认为这是一个错误,请联系工作人员。