如何防止Gitlab在分支合并时创建额外的合并提交

ee7vknir  于 2023-01-01  发布在  Git
关注(0)|答案(6)|浏览(500)

我在我的项目中使用GitLab。我正在探索合并请求功能。
1.我从master创建了一个topic_branch
1.在topic_branch上做了一堆提交。
1.已将topic_branch推送到远程。
1.已在master上创建合并请求以从topic_branch中提取更改。
1.在Gitlab中接受合并时,master拉取了所有提交,并创建了一个合并提交,看到代码重复是可怕的。
我应该在分支上创建一个压缩提交,然后创建合并请求。但是master仍然会有两个新提交,一个来自分支,另一个是合并提交。我假设,如果我从命令行这样做,即,

  1. checkout master
    1.将topic_branch合并到master
  2. commit / push master在这种情况下,master上只有一个提交。
    如何从GitLab实现这一点?
jpfvwuh4

jpfvwuh41#

靶病变; DR
项目〉设置〉常规〉合并请求设置〉快进合并。
就我个人而言,我也更喜欢在每次合并时执行squash commits
我认为GitLab现在支持这个。
步骤
1.转到您的project
1.导航至项目settings(注:这不是右上角提供的配置文件设置)
1.转到General选项卡。
1.导航到Merge Request Settings部分
1.选择Fast-Forward Merge

w8ntj3qf

w8ntj3qf2#

我应该在分支上创建一堆提交
在GitLab 13.3(2020年8月)中,有一个新的选项对你来说很有趣:

挤压提交选项

在Git中压缩提交是一种将多个提交合并为一个提交的好方法。
它非常适合在向上游推送之前将多个提交组合成一个大的提交,这些提交本身可能没有什么历史价值。
推送单个提交允许更有意义的提交消息,并确保提交组提供“绿色”的持续集成管道。
在GitLab 13.3中,我们为压缩提交添加了可配置的默认值,允许项目维护人员配置该选项以适应他们的首选工作流。
因为更改squash配置可能会引入不需要的行为,所以没有为新的或现有的项目更改配置。314个赞成票👍,这是社区最强烈要求的改进之一,我们希望它能让更多的用户使用这个强大的功能。

参见文档和Issue

w80xi6nr

w80xi6nr3#

正如我从http://doc.gitlab.com/ee/workflow/rebase_before_merge.html了解到的,GitLab总是创建合并提交来保留还原整个分支的方法。

nkhmeac6

nkhmeac64#

  1. checkout master
    1.将topic_branch合并到master
  2. commit / push master在这种情况下,master上只有一个提交。
    这是不正确的。你将在master分支中拥有来自topic_branch的所有提交和一个Merge branch 'topic_branch'提交,除了自从你从topic_branch分支出来后就没有提交被添加到master分支的情况。在这种情况下,git merge的默认行为是执行fast forward merge。快速向前合并将您的topic_branch es更改合并到master * 而不 * 合并提交(更多文档请参见此处)。
    然而,当你在GitLab中创建一个合并请求时,顾名思义,你是在请求将你的topic_branch合并到你的代码库中。默认情况下,GitLab总是会创建一个合并请求,即使可以进行快进合并,以保持提交是在你的历史中的另一个分支上开发的这一事实。
    好消息是:你可以配置GitLab来执行快进合并,而不是创建合并提交:参见here。然而,这似乎只能在GitLab企业版中实现。
scyqe7ek

scyqe7ek5#

update目前gitlab支持拒绝非快进提交和压缩合并请求的多个提交,所以我下面的评论不再有效
原始内容

如果你不想合并提交,就不要进行合并,这意味着在目标分支(master)上进行一次变基和一次推送。

q8l4jmvw

q8l4jmvw6#

就像医生说的:
GitLab Enterprise Edition提供了一种在合并请求之前进行变基的方法,您可以通过导航到项目设置页面并选中合并请求变基复选框来配置每个项目的变基。
基本上企业版是重点,付费换基功能。

相关问题