如何在Gitlab中更改合并的默认目标分支

Tob*_*sch 28 git settings merge gitlab

我们正在使用Gitlab 8.10.1与许多组和项目.许多项目恰好是其他项目的分支.我们的问题是,每当有人打开项目的合并请求时,默认目标分支不是项目的默认分支,而是来自一个非常特定的其他项目.有办法以某种方式覆盖此设置吗?为了说清楚,我知道如何设置项目的默认分支并且这些设置看起来是正确的,但gitlab似乎在创建合并请求时不会使用它们.这个问题非常烦人,当人们不注意并以完全不同的"主人"作为目标提出合并请求时,导致了奇怪的情况.

Dav*_*d P 28

默认MR目标取决于存储库是否为GitLab分支.

福克斯

如果存储库是GitLab分支,则默认MR目标将是上游存储库的默认分支.可以通过"项目设置"页面上的"删除分支关系"选项删除此关系,之后将为非分支存储库确定默认MR目标(如下所述).

在编写本文时,如果不删除fork关系,则无法覆盖默认的MR目标,但在gitlab-ce问题#18550中已请求该功能.

非福克斯

如果存储库没有fork关系,则Project settings页面上的Default Branch设置同时设置(1)默认MR目标,以及(2)GitLab服务器上repo的HEAD引用(确定已检出的分支)当克隆回购时).需要注意的是,由于在git的错误/怪癖,可能会出现问题,如果这是一个分支,一旦默认分支稍后从GitLab删除.

在撰写本文时,无法独立于默认分支更改默认MR目标,但已在gitlab-ce问题#31546/#13949中请求此功能.


小智 9

你需要掌握.然后项目设置---默认分支---保存更改

请享用!


Noa*_*tin 6

从版本 11.5.3 开始,设置发生了一些变化。来自docs.gitlab.com

创建新项目时,GitLab 将 master 设置为项目的默认分支。您可以在项目的 Settings > Repository 下选择另一个分支作为项目的默认分支。


Tob*_*sch 5

我们找到此行为的根源,这是由于项目之间的关系所致,因为一个项目是在另一个项目中从gitlab分叉的。删除源和fork之间的关系时,用于合并的默认分支是项目本身的默认分支。现在,这是我们针对这种情况的解决方案,因为我们可以忍受去除source--fork关系的影响。

  • 如果您可以列出执行此操作的步骤,则将更为有用。 (7认同)

Von*_*onC 5

关于分叉, GitLab 13.11(2021 年 4 月)有一个有趣的功能

\n
\n

为分叉中的合并请求设置默认目标项目

\n

分叉项目后,使用合并请求为上游项目做出贡献可能是有益的。

\n

以前,GitLab 假设来自分支项目的合并请求始终针对上游项目。
\n这可能会导致错误,其中代码不应\xe2\x80\x99 合并到上游,或者用户需要在打开合并请求之前进行更改。

\n

GitLab 现在支持为在分支项目中创建的合并请求设置默认目标项目。
\n这简化了贡献,并有助于避免那些更常为其分叉项目而不是上游项目做出贡献的用户和团队犯错误。

\n

https://about.gitlab.com/images/13_11/code-review-default-project-target-mr.png -- 设置分叉中合并请求的默认目标项目

\n

请参阅文档问题

\n
\n
\n

您还可以将其与GitLab 16.6(2023 年 11 月)结合起来:

\n
\n

最小分叉 - 仅包含默认分支

\n

在以前版本的 GitLab 中,在分叉存储库时,分叉始终包含存储库内的所有分支。\n现在您可以仅使用默认分支创建分叉,从而降低复杂性和存储空间。\n如果不这样做,请创建最少的分叉\xe2\ x80\x99t 需要当前正在其他分支中进行的更改。

\n

默认的分叉方法不会更改,并继续包含存储库中的所有分支。\n新选项显示哪个分支是默认分支,以便您准确了解新分叉中将包含哪个分支。

\n

https://about.gitlab.com/images/16_6/create-minimal-forking-default-branch.png -- 最小分叉 - 仅包含默认分支

\n

请参阅文档问题

\n
\n