推送选项

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

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

note Git 推送选项仅适用于 Git 2.10 或更新版本。

对于 Git 版本 2.10 到 2.17,使用--push-option

git push --push-option=<push_option>

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

git push -o <push_option>

极狐GitLab CI/CD 推送选项

您可以使用推送选项跳过 CI/CD 流水线,或传递 CI/CD 变量。

推送选项 描述 引入版本
ci.skip 不要为最新推送创建 CI 流水线。只跳过分支流水线而不是合并请求流水线 11.7
ci.variable="<name>=<value>" 提供 CI/CD 变量以在 CI 流水线中使用(如果由于推送而创建)。 12.6

使用 ci.skip 的示例:

git push -o ci.skip

为流水线传递一些 CI/CD 变量的示例:

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

合并请求推送选项

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

推送选项 描述 引入版本
merge_request.create 为推送的分支创建一个新的合并请求。 11.10
merge_request.target=<branch_name> 将合并请求的目标设置为特定分支,或上游项目,比如:git push -o merge_request.target=project_path/branch 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="我想要的标题" 12.2
merge_request.description="<description>" 设置合并请求的描述。例如:git push -o merge_request.description="我想要的描述" 12.2
merge_request.draft 将合并请求标记为 draft。例如:git push -o merge_request.draft 15.0
merge_request.milestone="<milestone>" 设置合并请求的里程碑。例如:git push -o merge_request.milestone="3.0" 14.1
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
merge_request.assign="<user>" 将用户分配给合并请求。接受用户名或用户 ID。例如,对于两个用户:git push -o merge_request.assign="user1" -o merge_request.assign="user2"。对用户名的支持添加于 15.5 版本。 13.10
merge_request.unassign="<user>" 从合并请求中删除分配的用户。接受用户名或用户 ID。例如,对于两个用户:git push -o merge_request.unassign="user1" -o merge_request.unassign="user2"。对用户名的支持添加于 15.5 版本。 13.10

如果您使用要求文本中包含空格的推送选项,则需要将其括在引号 (") 中。如果没有空格,您可以省略引号。一些示例:

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

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

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

此外,如果您希望在流水线成功后立即合并合并请求,您可以执行以下操作:

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

有用的 Git 别名

如上所示,Git 推送选项会导致 Git 命令变得很长。如果您经常使用相同的推送选项,创建 Git 别名 会很有用。Git 别名是 Git 的命令行快捷方式,可以显着简化长 Git 命令的使用。

流水线成功时合并别名

流水线成功时合并的 Git 推送选项设置一个 Git 别名:

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

然后快速推送以默认分支为目标的本地分支,并在流水线成功时合并:

git mwps origin <local-branch-name>