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

时间:2015-04-03 14:29:28

标签: git version-control merge gitlab

我在我的项目中使用GitLab。我正在探索合并请求功能。

  1. 我从topic_branch创建了master
  2. topic_branch上做了一堆提交。
  3. topic_branch推送到远程。
  4. master上创建合并请求以从topic_branch提取更改。
  5. 在Gitlab上接受合并时,master撤消了所有提交,并创建了一个合并提交,这看起来很复杂。
  6. 我应该在分支上创建一个提交,然后创建合并请求。但仍然master会有两个新的提交,一个来自分支,另一个是合并提交。我假设,如果我从命令行执行此操作,

    1. 结帐master
    2. topic_branch合并到master
    3. 提交/推送master 在这种情况下,master上只有1个提交。
    4. 如何从GitLab实现这一目标?

5 个答案:

答案 0 :(得分:3)

TL; DR

您的项目>设置>一般>合并请求设置>快进合并。

就个人而言,我也更喜欢在每次合并时squash commits

我认为GitLab现在支持这一点。

步骤

  1. 转到project
  2. 导航到项目settings(注意:这不是右上角提供的配置文件设置)
  3. 转到General标签。
  4. 导航至Merge Request Settings部分
  5. 选择Fast-Forward Merge
  6. enter image description here

答案 1 :(得分:1)

我应该已经在分支上创建了一组提交

对于GitLab 13.3(2020年8月),有一个新的选项对于您的情况很有趣:

Squash提交选项

在Git中压缩提交是一种将多个提交合并为一个提交的好方法。
非常适合将多个提交(可能仅提供很小的历史价值)分组到一个大的提交中,然后再向上游推送。
推送单个提交可以提供更有意义的提交消息,并确保提交组提供了“绿色”的持续集成管道。

在GitLab 13.3中,我们为挤压提交添加了可配置的默认值,使项目维护人员可以配置选项以适合他们喜欢的工作流程。

由于更改壁球配置可能会导致不良行为,因此未更改新项目或现有项目的配置。有了314个投票?,这是社区要求最高的改进之一,我们希望它可以允许更多用户使用此强大功能。

https://about.gitlab.com/images/13_3/create_source_code_configurable_defaults_for_squash_commits_option.png -- Squash Commits Options

请参见DocumentationIssue

答案 2 :(得分:0)

据我所知,http://doc.gitlab.com/ee/workflow/rebase_before_merge.html GitLab将始终创建合并提交以保留恢复整个分支的方法。

答案 3 :(得分:0)

  
      
  1. 结帐master
  2.   
  3. topic_branch合并到master
  4.   
  5. commit / push master在这种情况下,master上只有1次提交。
  6.   

事实并非如此。您将拥有来自topic_branchMerge branch 'topic_branch'提交的所有提交,之外没有提交到主分支的情况,因为您已分支{{1 }}。在这种情况下,topic_branch的默认行为是执行fast forward merge。快进合并将您的git merge更改合并到主而不合并提交(有关详细说明,请参阅here)。

但是,当您在GitLab中创建合并请求时,正如名称所示,您要求将topic_branch合并到您的代码库中。默认情况下,GitLab将始终创建合并请求,即使可以进行快速合并,也可以保留提交是在历史记录中的另一个分支上开发的事实。

现在好消息:您可以配置GitLab来执行快进合并而不是创建合并提交:请参阅here。但是,似乎这只能在GitLab企业版中实现。

答案 4 :(得分:-1)

更新目前gitlab支持拒绝非快进提交和压缩合并请求的多次提交,所以我的评论不再有效

原创内容

如果您不想进行合并提交,请不要​​进行合并。这意味着在目标分支(主)和推送上执行rebase。