作者:小秋秋 | 来源:互联网 | 2022-12-05 15:02
我们将GitLab.com用于我们的项目。我们正在将代码master
从质量检查分支(qa
)合并到发布分支()中。自一个月前发布最新版本以来,没有分支提交到master分支。
对于几个项目,自动合并在GitLab的UI中失败,我必须通过命令行手动完成操作,以通过GitLab的UI解决冲突。我不知道这是怎么发生的,因为没有任何可更改的master
冲突。
qa --?--?--?--?--?--
\ \
master ----?-----------?--
当我合并冲突时,qa
无论如何(git merge -X theirs
)我最终都会从分支中获取所有更改。它也不是所有文件(谢天谢地!),其中5个文件只有5-10个更改,而50个文件中有300个更改。
但是我只是不明白是什么引发了这些冲突。
注意:我确实压缩了qa
合并时的所有提交master
。现在,我认为这可能是问题的一部分。仍然不确定如何。
1> Nick..:
我想我找到了问题。在一个简单的依赖项目中,它发生了,因此可以很好地作为一个例子。
完全无法在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的用户界面中打开合并请求后,这些冲突会立即出现,因此我猜测合并请求的创建是导致错误的合并提交的原因。也许使用了'squash commits'复选框(可以在创建合并请求时选择它,也可以在已经打开的合并请求中执行合并操作)。
关于为什么GitLab这样做的原因仍然不知所措,也许是一个错误。下次我创建具有这些奇怪冲突的合并请求时,我将让它们保持打开状态,以查看它是否确实在创建过程中创建了错误的合并请求。
更新2018年12月
再次释放时间。我注意了 仍不是100%知道发生了什么。发起翻译项目的合并请求,master
自从上次合并以来,该项目的提交次数为零qa
。
冲突。看着他们。没有任何意义。在另一个选项卡中刷新存储库时没有注意到任何提交。完成冲突解决后,单击UI中的“解决冲突”,然后创建了master-> qa的提交。这只是Gitlab实现的合并方式。通过将母版放入质量检查中,然后再合并起来,可以解决冲突。字面上是在用户界面的冲突解决页面中说的
或者其他的东西。使我发疯,但在发布之日没有时间进行Dally-Dally。