When you create merge request often you will want to squash all the commits into one.
If you search Google about how to squash all commits, you will often find confusing tutorials that will either recommend using git rebase (where you have to manually specify which commits you want to squash), or tutorials recommending using git reset or git rebase on latest n commits (where you need to know how many commits you made in your branch). But there is an easier way.
One liner solution
git reset $(git merge-base origin/master $(git rev-parse --abbrev-ref HEAD))What happens
git rev-parse --abbrev-ref HEADGets current name of the branch, eg.: branch-name
git merge-base origin/master my-branchGit merge-base finds best common ancestor between two commits to use in a three-way merge, eg.: c111855daca0d1834cc836dc65ea39d22dabf14c.
After this command you will end up in the state where your branch will be identical to origin/master and all the changes you made on your branch will be unstaged. So all you need to do is add the changes to staging, create squashed commit and force push to your branch.
git add .
git commit -m "commit message"
git push --forceThat's it.
TLDR
Replace origin/master with the branch against you are merging.
git reset $(git merge-base origin/master $(git rev-parse --abbrev-ref HEAD))
git add .
git commit -m "commit message"
git push --force