Hello! Yesterday I submitted my first merge request to a KDE software! I forked the repo, applied the edits, committed them and pushed to my fork, and then from gitlab created a merge request. after a few hours, the author pushed something into the master, making my merge request 1 commit behind the master. On the merge request details page, I now get this error:
Merge blocked: the source branch must be rebased onto the target branch. [rebase without pipeline] [rebase]
If I try to click on [rebase], I get this red error:
Source branch is protected from force push
what should I do to make my merge request “mergeable” again?
I guess you should rebase or merge the Master branch into your branch and then push again:
git checkout master git pull origin master git checkout yourbranch git rebase master git push -f origin yourbranch
But if you got error since that new commit has conflict with your chances:
git merge master git push origin yourbranch
No! Bad dev! No biscuit!
Never merge master into a feature branch. It’s called a “wrong-way” merge and it makes the history fucking awful.
You shit in the face of project maintainers when you do this.
You may not care, in fact many don’t. Also people buy timeshares, read celebrity gossip magazines, and vote for scumbags. They are fucking idiots who don’t know what they are doing. So are people who leave wrong-way merges in shared history.
In fact, wrong-way mergers are worse, because you can’t just ignore them - git blame rubs your face in their shit, so they shit in your face forever.
Just don’t fucking do it, OK? Or I will hit you in the throat with a cricket bat soaked in wasps. As a first warning.
Not an issue if you’re squashing commits before merging into master though, right?
Sure I promise not to do it anymore. Calm down. Take a deep breath at first! :)) Could you explain the right way to do it? I’m not expert in using git. Explain the correct way to deal with the situation.
Your first way was the right way, rebasing
Mmm… And what if it had conflict and I got error?
Resolve those conflicts !
Presumably, your merge request is about merging your fork master branch into the upstream master branch, right?
In that case, you have two options:
- Go into the Gitlab settings of your fork, find the setting where branches are protected and disable the protection for your master branch
- (the recommended way, at least for future merge requests) always create a feature branch, never work on master in the first place. You can create a branch from what you have right now on the command line with
git checkout -b featurename
. Then push that branch and create a new merge request for it
Here’s a good guide, in the gitlab documentation.
Basicly :
- go to your locale repo
- git checkout master
- git pull
- git checkout ‘your feature branch’
- git rebase master
And then you’ll maybe have to resolve merge conflicts
They’re a ton of guide showing how to deal with this if you need
@tubbadu as other said, you should not create a PR from your master branch. You can still change the source of your PR using gitlab web UI (at least I think you can change after the initial creation. You may also temporarily remove the branch protection from the master branch using gitlab web UI in the repo setting to move this specific PR forward
Thanks to everyone for the answers!