Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to prevent Gitlab from creating extra merge commit on branch merge

Tags:

I use GitLab in my project. I'm exploring Merge Requests feature.

  1. I created a topic_branch from master.
  2. Made a bunch of commits on topic_branch.
  3. Pushed topic_branch to remote.
  4. Created a merge request on master to pull changes from topic_branch.
  5. On accept merge in Gitlab, master pulled all the commits and also created a merge commit which is horrible to see duplication of code.

I should have created a squash of commits on branch and then created merge request. But still master would have two new commits, one from the branch and another one would be merge commit. I'm assuming, if I do this from command line i.e,

  1. checkout master
  2. merge topic_branch into master
  3. commit / push master In this case, there would be only 1 commit on master.

How to achieve this from GitLab ?

like image 647
TechCrunch Avatar asked Apr 03 '15 14:04

TechCrunch


People also ask

How do I stop GitLab from merging?

To prevent merge request authors from approving their own merge requests, enable Prevent author approval in your project's settings. If you enable approval rule overrides, merge requests created before a change to default approval rules are not affected. The only exceptions are changes to the target branch of the rule.

How do I merge a branch without committing?

With --no-commit perform the merge and stop just before creating a merge commit, to give the user a chance to inspect and further tweak the merge result before committing. Note that fast-forward updates do not create a merge commit and therefore there is no way to stop those merges with --no-commit.

Does merging create a new commit?

Merging your branch into master is the most common way to do this. Git creates a new commit (M) that is referred to as a merge commit that results from combining the changes from your feature branch and master from the point where the two branches diverged.


2 Answers

TL;DR

Your Project > Settings > General > Merge Request Settings > Fast-Forward Merge.

Personally, I also prefer to do squash commits on every merge.


I think GitLab supports this now.

Steps

  1. Go to your project
  2. Navigate to project settings (Note: This is NOT the profile settings available on the top right)
  3. Go to General tab.
  4. Navigate to Merge Request Settings section
  5. Choose Fast-Forward Merge.

enter image description here

like image 132
EFreak Avatar answered Sep 17 '22 18:09

EFreak


I should have created a squash of commits on branch

With GitLab 13.3 (August 2020), there is a new option which is interesting in your case:

Squash Commits Options

Squashing commits in Git is a great way to combine several commits into a single one.
It’s great for grouping several commits, which by themselves may provide little historical value, into a single large commit before pushing upstream.
Pushing a single commit allows for a more meaningful commit message, as well as ensuring the group of commits provides a “green” continuous integration pipeline.

In GitLab 13.3 we are adding configurable defaults for squashing commits, allowing project maintainers to configure the option to suit their preferred workflow.

Because changing squash configuration may introduce unwanted behavior, configuration has not been changed for new or existing projects. With 314 upvotes đź‘Ť, this is one of the most highly requested improvements by the community and we hope it allows more users to use this powerful feature.

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

See Documentation and Issue.

like image 27
VonC Avatar answered Sep 21 '22 18:09

VonC