How to checkout merge request locally, and create new local branch?
Solution 1:
-
Pull merge request to new branch
git fetch origin merge-requests/REQUESTID/head:BRANCHNAME
i.e
git fetch origin merge-requests/10/head:file_upload
-
Checkout to newly created branch
git checkout BRANCHNAME
i.e (
git checkout file_upload
)
OR with single command
git fetch origin merge-requests/REQUESTID/head:BRANCHNAME && git checkout BRANCHNAME
i.e
git fetch origin merge-requests/18/head:file_upload && git checkout file_upload
Solution 2:
This is also documented in GitLab online documentation : https://docs.gitlab.com/ee/user/project/merge_requests/reviewing_and_managing_merge_requests.html#checkout-merge-requests-locally-through-the-head-ref
They supply this script (git alias) :
[alias]
mr = !sh -c 'git fetch $1 merge-requests/$2/head:mr-$1-$2 && git checkout mr-$1-$2' -
Then you can use this command :
git mr origin 4
So a new local branch mr-origin-4
will be created.
Solution 3:
You can also add the line
fetch = +refs/merge-requests/*/head:refs/remotes/origin/merge-requests/*
to your .git/config
to have git fetch
fetch all merge requests.