我在我的项目中使用GitLab。我正在探索合并请求功能。
1.我从master
创建了一个topic_branch
。
1.在topic_branch
上做了一堆提交。
1.已将topic_branch
推送到远程。
1.已在master
上创建合并请求以从topic_branch
中提取更改。
1.在Gitlab中接受合并时,master
拉取了所有提交,并创建了一个合并提交,看到代码重复是可怕的。
我应该在分支上创建一个压缩提交,然后创建合并请求。但是master
仍然会有两个新提交,一个来自分支,另一个是合并提交。我假设,如果我从命令行这样做,即,
- checkout
master
1.将topic_branch
合并到master
中 - commit / push
master
在这种情况下,master
上只有一个提交。
如何从GitLab实现这一点?
6条答案
按热度按时间jpfvwuh41#
靶病变; DR
项目〉设置〉常规〉合并请求设置〉快进合并。
就我个人而言,我也更喜欢在每次合并时执行
squash commits
。我认为GitLab现在支持这个。
步骤
1.转到您的
project
1.导航至项目
settings
(注:这不是右上角提供的配置文件设置)1.转到
General
选项卡。1.导航到
Merge Request Settings
部分1.选择
Fast-Forward Merge
。w8ntj3qf2#
我应该在分支上创建一堆提交
在GitLab 13.3(2020年8月)中,有一个新的选项对你来说很有趣:
挤压提交选项
在Git中压缩提交是一种将多个提交合并为一个提交的好方法。
它非常适合在向上游推送之前将多个提交组合成一个大的提交,这些提交本身可能没有什么历史价值。
推送单个提交允许更有意义的提交消息,并确保提交组提供“绿色”的持续集成管道。
在GitLab 13.3中,我们为压缩提交添加了可配置的默认值,允许项目维护人员配置该选项以适应他们的首选工作流。
因为更改squash配置可能会引入不需要的行为,所以没有为新的或现有的项目更改配置。314个赞成票👍,这是社区最强烈要求的改进之一,我们希望它能让更多的用户使用这个强大的功能。
参见文档和Issue。
w80xi6nr3#
正如我从http://doc.gitlab.com/ee/workflow/rebase_before_merge.html了解到的,GitLab总是创建合并提交来保留还原整个分支的方法。
nkhmeac64#
master
1.将
topic_branch
合并到master
中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企业版中实现。
scyqe7ek5#
update目前gitlab支持拒绝非快进提交和压缩合并请求的多个提交,所以我下面的评论不再有效
原始内容
如果你不想合并提交,就不要进行合并,这意味着在目标分支(master)上进行一次变基和一次推送。
q8l4jmvw6#
就像医生说的:
GitLab Enterprise Edition提供了一种在合并请求之前进行变基的方法,您可以通过导航到项目设置页面并选中合并请求变基复选框来配置每个项目的变基。
基本上企业版是重点,付费换基功能。