I have GitLab repository there and I need to test every merge request locally, before merging to the target branch.
How can I pull/fetch merge request as a new branch?
I have GitLab repository there and I need to test every merge request locally, before merging to the target branch.
How can I pull/fetch merge request as a new branch?
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
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.
You can also add the line
fetch = +refs/merge-requests/*/head:refs/remotes/origin/merge-requests/*
to your .git/config
(section [remote "origin"]
or replace origin
with your remote's name) to have git fetch
fetch all merge requests. This line is in addition after any already existing fetch
line (the +
causes this to be added, not replacing).
Then you can copy comments from Step 1. Fetch and check out the branch for this merge request.
git fetch <repo> <branch>
git checkout -b <branch>