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