我在我的项目中使用GitLab。我正在探索合并请求功能。
topic_branch
创建了master
。topic_branch
上做了一堆提交。 topic_branch
推送到远程。 master
上创建合并请求以从topic_branch
提取更改。 master
撤消了所有提交,并创建了一个合并提交,这看起来很复杂。 我应该在分支上创建一个提交,然后创建合并请求。但仍然master
会有两个新的提交,一个来自分支,另一个是合并提交。我假设,如果我从命令行执行此操作,
master
topic_branch
合并到master
master
在这种情况下,master
上只有1个提交。如何从GitLab实现这一目标?
答案 0 :(得分:3)
您的项目>设置>一般>合并请求设置>快进合并。
就个人而言,我也更喜欢在每次合并时squash commits
。
我认为GitLab现在支持这一点。
答案 1 :(得分:1)
我应该已经在分支上创建了一组提交
对于GitLab 13.3(2020年8月),有一个新的选项对于您的情况很有趣:
Squash提交选项
在Git中压缩提交是一种将多个提交合并为一个提交的好方法。
非常适合将多个提交(可能仅提供很小的历史价值)分组到一个大的提交中,然后再向上游推送。
推送单个提交可以提供更有意义的提交消息,并确保提交组提供了“绿色”的持续集成管道。在GitLab 13.3中,我们为挤压提交添加了可配置的默认值,使项目维护人员可以配置选项以适合他们喜欢的工作流程。
由于更改壁球配置可能会导致不良行为,因此未更改新项目或现有项目的配置。有了314个投票?,这是社区要求最高的改进之一,我们希望它可以允许更多用户使用此强大功能。
请参见Documentation和Issue。
答案 2 :(得分:0)
据我所知,http://doc.gitlab.com/ee/workflow/rebase_before_merge.html GitLab将始终创建合并提交以保留恢复整个分支的方法。
答案 3 :(得分:0)
- 结帐
master
- 将
topic_branch
合并到master
- commit / push
醇>master
在这种情况下,master
上只有1次提交。
事实并非如此。您将拥有来自topic_branch
和Merge branch 'topic_branch'
提交的所有提交,除之外没有提交到主分支的情况,因为您已分支{{1 }}。在这种情况下,topic_branch
的默认行为是执行fast forward merge。快进合并将您的git merge
更改合并到主而不合并提交(有关详细说明,请参阅here)。
但是,当您在GitLab中创建合并请求时,正如名称所示,您要求将topic_branch
合并到您的代码库中。默认情况下,GitLab将始终创建合并请求,即使可以进行快速合并,也可以保留提交是在历史记录中的另一个分支上开发的事实。
现在好消息:您可以配置GitLab来执行快进合并而不是创建合并提交:请参阅here。但是,似乎这只能在GitLab企业版中实现。
答案 4 :(得分:-1)
更新目前gitlab支持拒绝非快进提交和压缩合并请求的多次提交,所以我的评论不再有效
原创内容
如果您不想进行合并提交,请不要进行合并。这意味着在目标分支(主)和推送上执行rebase。