为什么我在 gitlab/git merge-request/merge 期间得到一个分离的 HEAD?

Why am I getting a detached HEAD during gitlab/git merge-request/merge?

首先要提到的是,我已经尝试了之前问题中的一些事情,但其中 none 符合我的情况。

  1. This does not somehow "register" as a merge in gitlab. 我得出这个结论是因为当我尝试在合并后删除分支时,git 发出警告。当然我可以强制删除分支,但我更愿意保持合并历史干净。
  2. This answer, afai understand, seems to be for sub repositories/modules 这不是我在这里的设置。
  3. Did not experiment with it to avoid any possible further inconsistency.

场景是这样的:

我在 GitLab 中有一个存储库,我正在尝试解决合并请求,即将 MR 的关联分支合并到 master。在提交并将所有更改推送到 MR 分支 19-some-function 之后,我按照 Gitlab [4] 中的说明手动 merge ,这导致 detached HEAD 状态。

$ git fetch origin

$ git checkout -b 19-some-function origin/19-some-function
fatal: A branch named '19-some-function' already exists.

$ git checkout origin/master
Note: switching to 'origin/master'.

You are in 'detached HEAD' state. You can look around, make experimental 
[truncated]

$ git merge --no-ff 19-some-function
Merge made by the 'recursive' strategy.
 package-lock.json                                  |  55 +++++++
 package.json                                       |   1 +
 src/Common/Constants.js                            |   2 +-
 src/Common/utils.js                                |  23 +++

(而不是通过 Gitlab MR 页面 UI: "resolve WIP" > "Merge" 通过单击按钮,坦率地说,我不确定 BHS 是做什么的。但是必须补充一点,当我确实使用 UI 时,我没有得到一个分离的 HEAD)我是唯一的开发人员并且还没有单独的审阅者,所以我不知道说明中的第 1 步和第 2 步是否多余(它试图创建 MR 分支。这对审阅者来说很有意义,但作为该功能的开发人员,我已经拥有该分支,所以 git 会抛出一个错误,如上所示,因此对 运行 没有意义在 checkout 之前再次 git fetch origin)。

如何解决此 detached HEAD 以便将其记录为 19-some-functionmaster 的合并? question/answer (2) 以上有帮助吗?

[4] MR 分支是 19-some-function

Check out, review, and merge locally
×
Step 1. Fetch and check out the branch for this merge request
  git fetch origin
  git checkout -b 19-some-function origin/19-some-function

Step 2. Review the changes locally

Step 3. Merge the branch and fix any conflicts that come up
  git fetch origin
  git checkout origin/master
  git merge --no-ff 19-some-function

Step 4. Push the result of the merge to GitLab
  git push origin master

当您要求结帐 origin/master 时,您将自己设置为 detached HEAD 状态。你没有签出 local branch master,所以你必须放在 detached HEAD 上。但没关系。然后你可以合并你想要的 PR 分支然后推送到 origin/master 如果你想:

git push origin HEAD:master