![](/img/trans.png)
[英]In gitlab or git command line, how to track which merge request a master branch commit come from?
[英]How to prevent Gitlab from creating extra merge commit on branch merge
我在我的项目中使用 GitLab。 我正在探索合并请求功能。
master
创建了一个topic_branch
。topic_branch
上做了一堆提交。topic_branch
推送到远程。master
上创建合并请求以从topic_branch
中提取更改。master
提取了所有提交并创建了一个合并提交,看到代码重复是很可怕的。 我应该在分支上创建大量提交,然后创建合并请求。 但是master
仍然会有两个新的提交,一个来自分支,另一个是合并提交。 我假设,如果我从命令行执行此操作,即
master
topic_branch
合并到master
master
在这种情况下, master
上只有 1 次提交。如何从 GitLab 实现这个?
我应该在分支上创建一个提交的壁球
在GitLab 13.3 (2020 年 8 月)中,有一个新选项对您来说很有趣:
壁球提交选项
在 Git 中压缩提交是将多个提交合并为一个的好方法。
在向上游推送之前,将多个提交(这些提交本身可能提供很少的历史价值)分组为单个大型提交非常有用。
推送单个提交允许更有意义的提交消息,并确保提交组提供“绿色”持续集成管道。在 GitLab 13.3 中,我们为压缩提交添加了可配置的默认值,允许项目维护人员配置选项以适合他们的首选工作流程。
由于更改壁球配置可能会引入不需要的行为,因此未更改新项目或现有项目的配置。 获得 314 票 👍,这是社区要求最高的改进之一,我们希望它能让更多用户使用这个强大的功能。
更新当前 gitlab 支持拒绝非快进提交和压缩合并请求的多个提交,所以我下面的评论不再有效
原创内容
如果您不想进行合并提交,请不要进行合并。 这意味着在目标分支(主)和推送上做一个 rebase。
正如我从http://doc.gitlab.com/ee/workflow/rebase_before_merge.html了解到的,GitLab 将始终创建合并提交以保留一种恢复整个分支的方法。
- 结账
master
- 将
topic_branch
合并到master
- commit / push
master
在这种情况下,在master
上只会有 1 次提交。
那不是真的。 您将在topic_branch
拥有来自topic_branch
所有提交和Merge branch 'topic_branch'
提交,除非自从您从topic_branch
分支后没有向 master 分支添加任何提交。 在这种情况下, git merge
的默认行为是执行快进合并。 快进合并将您的topic_branch
es 更改合并到 master,而无需合并提交(请参阅此处以获取更多文档)。
但是,当您在 GitLab 中创建合并请求时,顾名思义,您是在请求将您的topic_branch
合并到您的代码库中。 默认情况下,GitLab 将始终创建合并请求,即使可能进行快进合并,以保留提交是在历史记录中的另一个分支上开发的事实。
现在好消息是:您可以配置 GitLab 以执行快进合并,而不是创建合并提交:请参阅此处。 然而,这似乎只能在 GitLab 企业版中实现。
好吧,正如医生所说:
GitLab 企业版提供了一种在合并合并请求之前变基的方法。 您可以通过导航到项目设置页面并选择 Merge Requests Rebase 复选框来配置每个项目的基础。
基本上企业版是重点,rebase function 付费。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.