极狐 GitLab 冷知识:使用 git push 创建 Merge Request

这篇具有很好参考价值的文章主要介绍了极狐 GitLab 冷知识:使用 git push 创建 Merge Request。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

在使用 GitLab 时,创建 Merge Request 是最常用的功能之一,每天有大量的 Merge Request 被 Create、Review、Approve 和 Merge,尽管 GitLab 的产品经理和 UX 设计师们已经尽力的将 UI 设计的简洁易懂好操作,并提供了一些诸如使用 Email、API、Web IDE、VS Code 插件等创建 Merge Request 的功能,但这些操作都逃不过:create new branch ==> git push ==> create merge request 这三步。

那么有没有方法可以将这三步合并成一步呢?答案是有的,git push options 可以直接通过 git push 来创建 GitLab Merge Request。

Tips:在您向 GitLab 推送新分支完成后,GitLab 会在您的终端用链接提示您创建合并请求,效果如下:... remote: To create a merge request for my-new-branch, visit: remote: https://gitlab.example.com/my-group/my-project/merge_requests/new?merge_request%5Bsource_branch%5D=my-new-branch ⌘+点击该链接 即可直接跳转 Merge Request 创建页面。

版本要求

GitLab 自 11.7 版本开始支持 git push options,目前(GitLab 15.0)支持的 push options 有 CI/CD 操作Merge Request 操作 两种。

Git push options 仅适用于 Git 2.10 或更新版本。

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


git push --push-option=<push_option>

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

git push -o <push_option>

创建 Merge Request

现在您就可以使用一行 git push 命令来完成推送代码+创建 Merge Request 的操作了:

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

复制代码

Tips: 通过使用多个 -o(或 --push-option)标志,您可以组合推送选项以一次完成多个任务。

可用选项

GitLab 提供了多种操作项来帮您完成 Merge Request 的创建。当然,您也可以通过 merge_request.description + Quick action 的方式完成更多的操作。

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

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

复制代码

在 GitLab CI 中创建 Merge Request

目前网上对于在 GitLab CI 中创建 Merge Request 的方法,全是使用 curl 调用 GitLab API 来实现的。其实不必那么麻烦,git push options 一个操作即可解决。

Create Merge Request:  stage: push  image: alpine:latest  before_script:    - sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories    - apk add --update git    - git config --global user.name "${GITLAB_USER_NAME}"    - git config --global user.email "${GITLAB_USER_EMAIL}"  script: |        echo "create merge request"    git checkout -b auto-${CI_JOB_ID}    git add .    git commit -m "auto create merge request"    git push "https://${GITLAB_USER_LOGIN}:${CI_GIT_TOKEN}@${CI_REPOSITORY_URL#*@}" "HEAD:auto-${CI_JOB_ID}" \     -o merge_request.create -o merge_request.target=develop -o merge_request.remove_source_branch \     -o merge_request.title="auto generator swagger api" -o merge_request.label="auto-generation" -o merge_request.assign="qk44077907"


这里的 $CI_GIT_TOKEN 需要先创建用户访问令牌,并将其添加到 CI/CD Variables 当中。如果使用的是项目访问令牌,则需要将 ${GITLAB_USER_NAME} 和 ${GITLAB_USER_EMAIL} 配置为项目机器人用户:

  • Name:project_{project_id}_bot

  • Email:project{project_id}_bot@noreply.{Gitlab.config.gitlab.host}

更多内容见官方文档。

CI/CD Push options

目前支持的 CI/CD push options 有两个:跳过 CI Jobs插入 CI/CD Variable,比较常用的是 插入 CI/CD Variable,可以用来测试一些 Variable 的效果。

使用 ci.skip 的示例:

git push -o ci.skip

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

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

使用 git alias 简化命令

一般来说使用 git push options 的场景都比较固定,可以考虑将很长的 push options 设置为 Git aliases 来简化命令。

设置 Git alias:

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>

结语

极狐 GitLab 文档中心

现已正式上线,本文的大部分内容来自使用 Git --> 推送选项部分。在开始动手工作之前仔细阅读一下文档是一个非常好的习惯,可以帮助您少走很多弯路。

参考资料

  • 推送选项 - docs.gitlab.cn文章来源地址https://www.toymoban.com/news/detail-791625.html

到了这里,关于极狐 GitLab 冷知识:使用 git push 创建 Merge Request的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 极狐GitLab 价值流管理之「总时间图」使用指南

    极狐GitLab 价值流管理之「总时间图」使用指南

    本文来源: about.gitlab.com 作者 :Haim Snir 译者 :极狐(GitLab) 市场部内容团队 对于软件研发管理者来说,了解在整个研发过程中时间都耗费在了哪些地方,是进行交付价值优化的关键洞察 。GitLab / 极狐GitLab 新的价值流分析总时间图是一种可视化展示,帮助研发管理者掌握软件

    2024年02月11日
    浏览(11)
  • gitlab 合并代码分支 Merge 按钮灰掉了,无法合并代码, git merge --no-ff 的作用

    gitlab 合并代码分支 Merge 按钮灰掉了,无法合并代码, git merge --no-ff 的作用

    提交的分支无法合并,用 git merge --no-ff 合并。 在 gitlab 上合并分支代码的时候,因为自己就是管理员,有时候提交代码,准备合并的时候会发现无法合并成功。网页上 Merge 按钮灰掉了,出现提示 : 点击 “Resolve locally” 按钮: 按照上图完成 Step3 然后本地修改完冲突,提交

    2024年02月03日
    浏览(20)
  • IDEA使用Git提交代码remote: GitLab: You are not allowed to push code to protected branches on this project

    创建了一个新项目,提交到GitLab上的master分支时,报错如下: 刚开始以为自己的账号没权限提交代码,然后打开 .gitconfig文件 查看自己 git的用户名和email是否正确,发现正确无误 或者打开终端,查看git用户名和邮箱地址命令: 如果不相符,在桌面打开git终端,输入以下命令

    2024年02月10日
    浏览(8)
  • git 请求合并代码报错(The form contains the following error: Validate branches Another open merge request al)

    自己的远程仓库,已经有最新的代码了,但是提pr,就是提不了 在本地,删除远程分支,然后重新提交代码就行了

    2024年02月03日
    浏览(20)
  • 极狐GitLab 如何配置多个 LDAP?

    极狐GitLab 如何配置多个 LDAP?

    本文仅适用于极狐GitLab私有化部署场景。 极狐GitLab 的多 LDAP 接入功能解决了企业在以下场景中可能遇到的痛点: 多个组织/部门的整合 :在大型企业或跨国公司中,往往存在多个组织或部门,它们可能拥有独立的 LDAP 服务器。GitLab 的多 LDAP 接入功能允许这些组织或部门在一

    2024年02月21日
    浏览(11)
  • git push 出现fatal: unable to access…not resolve host:…报错的多方面原因及解决方法
Merge branch 'master' of ...

    git push 出现fatal: unable to access…not resolve host:…报错的多方面原因及解决方法 Merge branch 'master' of ...

    在git push -u origin \\\"master\\\"出现以下报错 fatal: unable to access  https://gitee.com.…….git/ : Could not resolve host: gitee.com.…… 在网上查阅、试了各种办法,都解决不了,最后发现自己有如下一些错误,也不知道哪一个导致了这样的结果,但是都更改后成功提交了。 1、我发现我刚注册的账

    2024年02月16日
    浏览(12)
  • 【极狐 GitLab】在 web 端合并分支

    【极狐 GitLab】在 web 端合并分支

    数字化管理平台 Vue3+Vite+VueRouter+Pinia+Axios+ElementPlus 权限系统-商城 个人博客地址 极狐GitLab是GitLab DevOps平台的中国发行版,一套完备的一站式DevOps平台,从根本上改变了开发、安全和运维团队协作和软件构建方式。极狐GitLab从构思到生产发布,帮助团队提高生产效率,将迭代周

    2024年02月05日
    浏览(12)
  • 在极狐GitLab 配置 SSL/https

    本文作者 徐晓伟 极狐GitLab https 使用的是 nginx 实现的 本文使用的域名是IP 192.168.80.14(原因:如果使用域名,必须拥有这个域名的所有权,并增加解析才可以,要不然在 Docker 容器中,无法使用域名检出代码,因为根据域名找不到DNS记录) 如果使用自己生成的证书,git 检出代

    2024年03月18日
    浏览(25)
  • 极狐GitLab 与 Flux 集成实现 GitOps

    极狐GitLab 与 Flux 集成实现 GitOps

    目录 flux 和 GitOps 极狐GitLab 与 flux 的集成 flux 命令行安装 极狐GitLab + flux = GitOps GitOps Demo 写在最后 众所周知,weaveworks 公司在 2017 年提出了 GitOps 这个概念,而 flux 是 weaveworks 开源的一款对 Kubernetes 上的应用实现持续交付的工具,2019 年 7 月 15日 被 CNCF 接受,现在处于孵化阶

    2024年02月04日
    浏览(24)
  • 极狐GitLab 和 ArgoCD 集成实现 GitOps

    极狐GitLab 和 ArgoCD 集成实现 GitOps

    目录 ArgoCD 和 GitOps 概述 极狐GitLab 与 ArgoCD 的集成 ArgoCD 的安装 sops 介绍 探秘 gpg sops 和 gpg 的结合 ArgoCD 的使用 极狐GitLab 仓库的添加 gpg public key 的添加 ArgoCD Project 创建 ArgoCD Project 配置 ArgoCD GitOps workflow 验证 ArgoCD 是一款开源且主要针对 Kubernetes 来做 GitOps 的持续交付工具。现

    2024年02月04日
    浏览(12)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包