当我推送我提交的代码时(使用
git push
),我从 gitlab 服务器收到一条非常好的、有用的消息,其中包含一个我可以立即用来设置合并请求的链接。它看起来像这样:
remote:
remote: To create a merge request for feature/xxxxx, visit:
remote: https://gitlab.xxxxx.net/xxxxx/-/merge_requests/new?merge_request%5Bsource_branch%5D=feature%2Fxxxxx
remote:
这对我来说是一条非常有用的消息,因为我可以简单地复制此链接并将其直接粘贴到网络浏览器中。直接访问此链接可以简化启动合并请求的过程,因为我可以跳过原本必须完成的几个步骤。
虽然我每次执行
git push
时都会收到此消息(也就是说,在我提交新更改之后),但我并不总是立即访问该链接。 (例如,我可能会选择继续修改我的代码,或者至少审查我的代码。)
但是稍后,当我准备好启动合并请求时,我无法再访问包含该链接的有用服务器文本。
当然,如果我有更多的代码要推送,这不是问题,但有时我没有额外的代码要推送。有没有办法让我再次看到这个有用的合并请求 URL?
我尝试过以下方法:
git push
git push --force
但他们都用一个简单的回应:
Everything up-to-date
所以简单地做一个
git push
是行不通的。 (我必须提交一些新的东西,然后做一个 git push
会给我我想要的信息。)
我的问题,重述:有没有一种方法可以让我看到合并请求 URL(gitlab 服务器给我的 URL),而不必重新提交代码和重新推送?
谢谢你。
GitLab 中的合并请求 URL 是静态的,它们与您所做的提交无关。
合并请求只是将一个分支合并到另一个分支的请求。默认情况下,合并发生在默认分支(例如,
main
)。
您可以简单地使用上一条消息中的相同 URL。
或者,您可以自己构造 URL。
从日志中获取原始 URL:
https://gitlab.xxxxx.net/xxxxx/-/merge_requests/new?merge_request%5Bsource_branch%5D=feature%2Fxxxxx
%5B
和%5D
可以分别解码为[
和]
。
URL可以这样解构:
https://
/<GITLAB_URL>
/-/merge_requests/new?merge_request[source_branch]=<NAMESPACE>
<BRANCH_NAME>
回答
只需提供分支名称而不是
<BRANCH_NAME>
。
对于 CI 管道
如果需要在 CI 管道中构造这样的 URL,可以使用内置的 GitLab 变量:
/merge_requests/new?merge_request[source_branch]=${CI_PROJECT_URL}
${CI_COMMIT_BRANCH}