我们将GitLab.com用于我们的项目。我们正在将代码从质量检查分支(master
)合并到发布分支(qa
)中。自一个月前发布最新版本以来,没有分支提交到master分支。
对于几个项目,自动合并在GitLab的UI中失败,我必须通过命令行手动进行操作通过GitLab的UI解决冲突。我不了解这种情况如何发生,因为master
上没有与之冲突的更改。
qa --●--●--●--●--●--
\ \
master ----●-----------●--
合并冲突后,我最终还是从qa
分支(git merge -X theirs
)进行了所有更改。也不是所有文件(感谢!),其中5个文件只有5-10个更改,而50个文件中只有300个更改。
但是我只是不明白是什么引发了这些冲突。
注意:合并到qa
时,我确实压缩了master
的所有提交。现在,我认为这可能是问题的一部分。仍然不确定如何。
答案 0 :(得分:2)
我想我找到了问题。在一个简单的依赖项目中,它就发生了,因此很好地举例说明了。
完全无法在UI 中运行的合并(必须通过CLI在本地解决的合并)被合并,而没有我要描述的问题。我已经更新了问题以反映这一点。
问题在于,GitLab会在合并之前按所需方向从目标分支到源分支进行自动合并提交。我验证了具有“冲突”的项目都发生了这些不良合并。它们也是没有手动合并的项目。
$ git log --abbrev-commit --graph qa master
* commit 92xxx (tag: v1.3.1, tag: v1.3.0, origin/master, origin/HEAD, master)
|\ Merge: 83xxx 7fxxx
| | Author: Nick
| | Date: Fri Sep 7 00:52:37 2018 +0000
| |
| | Merge branch 'qa' into 'master'
| |
| | v1.3
| |
| | See merge request translations!17
| |
| * commit 7fxxx
|/ Author: Nick
| Date: Fri Sep 7 00:52:37 2018 +0000
|
| v1.3
|
| * commit c14xxx (HEAD -> qa, origin/qa)
| |\ Merge: 76xxx 83xxx
| |/ Author: Nick
|/| Date: Fri Sep 7 00:52:29 2018 +0000
| |
| | Merge branch 'master' into 'qa'
| |
| | # Conflicts:
| | # langs/en-US.json
| |
* | commit 83xxx (tag: v1.2.1, tag: v1.2.0)
|\ \ Merge: 08xxx 73xxx
| | | Author: Nick
| | | Date: Fri Aug 3 14:09:04 2018 +0000
| | |
| | | Merge branch 'qa' into 'master'
| | |
| | | Merge for v1.1.2
| | |
| | | See merge request translations!13
| | |
m qa
master
是左行。 83xxx
与上一个版本的合并。 master
自上次发行以来没有提交,除了这种莫名其妙的错误合并。
因此,这说明了冲突。在GitLab的用户界面中打开合并请求后,这些冲突会立即出现,因此我猜测合并请求的创建是导致错误的合并提交的原因。也许使用了“压缩提交”复选框(可以在创建合并请求时选择它,也可以使用已经打开的合并请求的合并操作来选择它。)
不知道为什么GitLab这样做,可能是一个错误。下次创建具有这些怪异冲突的合并请求时,我将让它们处于打开状态,以查看它是否确实在创建过程中创建了错误的合并请求。
再次发布时间。我注意了仍不是100%知道发生了什么。对翻译项目发起合并请求,自上次来自master
的合并以来,该项目对qa
的提交次数为零。
冲突。看着他们。没有任何意义。在另一个选项卡中刷新存储库时没有注意到任何提交。完成冲突解决后,单击UI中的“解决冲突”,创建了master-> qa的提交。这只是Gitlab实现的合并方式。通过将母版放入质量检查中,然后再合并起来,可以解决冲突。字面上是在用户界面的冲突解决页面中说的
或其他。令我发疯,但在发布之日没有时间进行Dally-Dally。