如何从已从 CLI 推送的提交创建合并请求?

How to create a merge request from an already pushed commit from CLI?

我有一个名为 dev 的分支,它与 origin/dev 是最新的。我想使用以下命令合并到(受保护的)master,但它既不推送也不创建合并请求。

$ git push -o merge_request.create -o merge_request.target=master
Everything up-to-date

如何根据已从 CLI 推送的提交创建合并请求?

如果您的 dev 分支与原点上的 dev 分支是最新的,您的 git push 命令将不会执行任何操作,因为 Everything up-to-date.

要从 CLI 创建合并请求,请创建一个新分支(来自 dev)以进行推送:

git checkout -b dev2
git push -o merge_request.create -o merge_request.target=master

此解决方案基于 ,但我的更通用。下面的解决方案创建了一个自定义命名的分支来推送它,并在合并时请求删除新创建的分支。

# Create new unique merge-request branch ex: 1234abc-to-master
git checkout -b `git rev-parse --short HEAD`"-to-master"

# Create merge request with upstream this new branch
git push -u origin `git rev-parse --abbrev-ref HEAD` -o merge_request.create -o merge_request.target=master -o merge_request.remove_source_branch

我试图自动创建合并请求,但想先进行推送,然后再进行推送以创建实际的合并请求。在原始推送到远程之后,我已经使用了这个技巧:

git commit --amend --no-edit
git push --force-with-lease  origin [branch_name] -o merge_request.create -o merge_request.target=master

修改将保持原始提交不变,并允许您在创建合并请求时推送相同的分支。