GitLab 如何将更改推送到与非主分支不同的远程分支?

How in GitLab push changes to a remote branch that has diverged from non-master branch?

我的分支 dev_match_test 是对分支 origin/dev 的更新。

我想将 dev_match_test 分支的本地更改发送到远程存储库,

这样将 dev_match_test 合并到 dev 的合并请求可以在以后获得批准。

git status 命令表示:

On branch dev_match_test
Your branch is ahead of 'origin/dev' by 22 commits.
    (use "git push" to publish your local commits)

但是git pushreturns一个错误:

fatal: The upstream branch of your current branch does not match
the name of your current branch.  To push to the upstream branch
on the remote, use

    git push origin HEAD:dev

To push to the branch of the same name on the remote, use

    git push origin dev_match_test

尝试两个建议的选项都没有用:

git push origin HEAD:dev

returns一个错误

remote: GitLab: You are not allowed to push code to protected branches on this project.

我怀疑这是因为我试图将更改推送到 dev 而我没有这样做的权限。相反,我想推到 dev_match_test.

git push origin dev_match_test

只是 returns 一条消息 Everything up-to-date 什么都不做。

问题:如何将本地更改推送到dev_match_test分支?

最简单的方法可能是简单地从您所在的当前分支创建一个新分支,推送到远程,然后将新分支合并到开发中。

  1. 从当前分支创建一个新分支:

git checkout -b newBranchName

  1. 推送到远程:

git push -u origin newBranchName

  1. 在 GitLab 中,为 newBranchName 创建一个合并请求到 dev

请注意,这并不能解决您的分支 dev_match_test 未正确推送到远程的问题。要解决这个问题,更多信息会有所帮助。我怀疑分支 dev_match_test 被设置为从 origin/dev 而不是 origin/dev_match_test 进行跟踪。如果您可以发送 git remote -v 的输出(请隐藏 URL),那可能会有帮助。

如果您收到消息“everything up-to-date”,这意味着您所有的本地提交过去都已推送到远程。

只需在 GitLab 中创建一个新的合并请求和 select 正确的目标 (dev) 和源 (dev_match_test) 分支,您应该已经准备就绪。