Git:如何在本地签出合并请求,并创建新的本地分支?

Lok*_*han 15 git git-merge gitlab

我有gitlab存储库,我需要在合并到目标分支之前在本地测试每个合并请求.如何作为新分支提取/获取合并请求?

Lok*_*han 27

  1. 将合并请求拉到新分支

    git fetch origin merge-requests/REQUESTID/head:BRANCHNAME

    git fetch origin merge-requests/10/head:file_upload

  2. 结帐到新创建的分支

    git checkout BRANCHNAME

    即(git checkout file_upload)

或者使用单个命令

git fetch origin merge-requests/REQUESTID/head:BRANCHNAME && git checkout BRANCHNAME

git fetch origin merge-requests/18/head:file_upload && git checkout file_upload

  • 要从pull请求中获取更新的更改,只需在分支上执行git pull,即git pull origin merge-requests / 10 / head (3认同)

Tob*_*ler 13

您还可以添加行

fetch = +refs/merge-requests/*/head:refs/remotes/origin/merge-requests/*
Run Code Online (Sandbox Code Playgroud)

.git/configgit fetch获取所有的合并请求。


Pen*_*Liu 12

GitLab 中有一个Check out branch按钮。

在此输入图像描述

然后,您可以复制步骤 1 中的注释。获取并签出此合并请求的分支

git fetch <repo> <branch>
git checkout -b <branch>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


Gui*_*sta 7

GitLab在线文档中也对此进行了记录:https ://gitlab.com/help/user/project/merge_requests/index.md#checkout-merge-requests-locally

他们提供以下脚本(git别名):

[alias]
    mr = !sh -c 'git fetch $1 merge-requests/$2/head:mr-$1-$2 && git checkout mr-$1-$2' -
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用以下命令:

git mr origin 4

因此,mr-origin-4将创建一个新的本地分支。

  • 感谢您的提示。有用。然而,如何推迟对这个特定 MR 的提交呢? (3认同)