Push Options

原文:https://docs.gitlab.com/ee/user/project/push_options.html

Push Options

在 GitLab 11.7 中引入 .

GitLab 支持使用客户端Git 推送选项在推送更改的同时执行各种操作. 此外, 推送规则提供服务器端控制和实施选项.

当前,有推送选项可用于:

注意: Git 推送选项仅在 Git 2.10 或更高版本中可用.

对于 2.10 至 2.17 版本的 Git,请使用--push-option

  1. git push --push-option=<push_option>

对于 2.18 及更高版本,可以使用以上格式,或更短的-o

  1. git push -o <push_option>

Push options for GitLab CI/CD

您可以使用推入选项跳过 CI / CD 管道或传递环境变量.

推送选项 Description 版本介绍
ci.skip 不要为最新推送创建 CI 管道. 11.7
ci.variable="<name>=<value>" 如果由于推送而创建了环境变量 ,请提供要在 CI 管道中使用的环境变量 . 12.6

使用ci.skip的示例:

  1. git push -o ci.skip

An example of passing some environment variables for a pipeline:

  1. git push -o ci.variable="MAX_RETRIES=10" -o ci.variable="MAX_TIME=600"

Push options for merge requests

您可以在推送更改的同时使用 Git 推送选项对合并请求执行某些操作:

推送选项 Description 版本介绍
merge_request.create 为推送的分支创建一个新的合并请求. 11.10
merge_request.target=<branch_name> 将合并请求的目标设置为特定分支. 11.10
merge_request.merge_when_pipeline_succeeds 设置合并请求以在其管道成功时进行合并 . 11.10
merge_request.remove_source_branch 设置合并请求以在合并时删除源分支. 12.2
merge_request.title="<title>" 设置合并请求的标题. 例如: git push -o merge_request.title="The title I want" . 12.2
merge_request.description="<description>" 设置合并请求的描述. 例如: git push -o merge_request.description="The description I want" . 12.2
merge_request.label="<label>" 将标签添加到合并请求. 如果标签不存在,它将被创建. 例如,对于两个标签: git push -o merge_request.label="label1" -o merge_request.label="label2" . 12.3
merge_request.unlabel="<label>" 从合并请求中删除标签. 例如,对于两个标签: git push -o merge_request.unlabel="label1" -o merge_request.unlabel="label2" . 12.3

如果您使用要求文本带有空格的 push 选项,则需要用引号( " )括起来.如果没有空格,则可以省略引号.例如:

  1. git push -o merge_request.label="Label with spaces"
  2. git push -o merge_request.label=Label-with-no-spaces

您可以通过使用多个-o (或--push-option )标志来组合推送选项以一次完成多个任务. 例如,如果您要创建一个新的合并请求,并定位一个名为my-target-branch

  1. git push -o merge_request.create -o merge_request.target=my-target-branch

此外,如果希望合并请求在管道成功后立即合并,则可以执行以下操作:

  1. git push -o merge_request.create -o merge_request.target=my-target-branch -o merge_request.merge_when_pipeline_succeeds

Useful Git aliases

如上所示,Git 推送选项可能导致 Git 命令增长很长. 如果您经常使用相同的 push 选项,则创建Git 别名会很有用. Git 别名是 Git 的命令行快捷方式,可以大大简化长 Git 命令的使用.

Merge when pipeline succeeds alias

在管道成功执行 Git push 选项时合并设置 Git 别名:

  1. git config --global alias.mwps "push -o merge_request.create -o merge_request.target=master -o merge_request.merge_when_pipeline_succeeds"

然后,为了在管道成功时快速推送将针对 master 并合并的本地分支:

  1. git mwps origin <local-branch-name>