跳至主要内容

在本地检出拉取请求

当有人从您的仓库的 fork 或分支向您发送拉取请求时,您可以将其在本地合并以解决合并冲突,或者在 GitHub 上合并之前测试和验证更改。

谁可以使用此功能?

任何具有仓库写入权限的用户都可以在本地拉取远程拉取请求。

平台导航

注意

拉取请求作者可以授予上游仓库维护者或具有上游仓库推送访问权限的用户许可,以对其拉取请求的比较分支(在用户拥有的 fork 中)进行提交。 有关更多信息,请参阅“允许更改从 fork 创建的拉取请求分支”。

在本地修改活动拉取请求

  1. 在您的仓库名称下,单击 拉取请求.

    Screenshot of the main page of a repository. In the horizontal navigation bar, a tab, labeled "Pull requests," is outlined in dark orange.

  2. 在拉取请求列表中,单击您要修改的拉取请求。

  3. 要选择要在其中打开拉取请求的位置,请选择** 代码**下拉菜单并单击其中一个选项卡。

    Screenshot of a pull request title. A button with an arrow indicating a dropdown menu, labeled "Code," is outlined in dark orange.

要了解有关 GitHub CLI 的更多信息,请参阅“关于 GitHub CLI”。

要在本地检出拉取请求,请使用gh pr checkout子命令。 将PULL-REQUEST替换为拉取请求的编号、URL 或 head 分支。

gh pr checkout PULL-REQUEST

在本地修改非活动拉取请求

如果拉取请求的作者没有响应请求或已删除其 fork,则仍然可以通过新的拉取请求合并该拉取请求中提出的更改。 但是,如果您想更改拉取请求并且作者没有响应,则需要执行一些其他步骤来更新拉取请求。

打开拉取请求后,GitHub 会远程存储所有更改。 换句话说,即使在合并拉取请求之前,拉取请求中的提交也可用于仓库中。 您可以获取打开的拉取请求并将其重新创建为自己的拉取请求。

任何人都可以使用先前打开的拉取请求来继续处理它、测试它,甚至可以使用其他更改打开新的拉取请求。 但是,只有具有推送访问权限的协作者才能合并拉取请求。

  1. 在您的仓库名称下,单击 **问题**或 拉取请求.

    Screenshot of the main page of a repository. In the horizontal navigation bar, two tabs, labeled "Issues" and "Pull requests," are each outlined in dark orange.

  2. 在“拉取请求”列表中,单击您要合并的拉取请求。

  3. 找到未激活的拉取请求的 ID 号。这是拉取请求标题后的一串数字。

    Screenshot of the title of a pull request. The pull request's ID number is outlined in dark orange.

  4. 打开 终端终端Git Bash

  5. 根据 ID 号获取拉取请求的引用,在这个过程中创建一个新的分支。

    git fetch origin pull/ID/head:BRANCH_NAME
    
  6. 切换到基于此拉取请求的新分支。

    [main] $ git switch BRANCH_NAME
    > Switched to a new branch 'BRANCH_NAME'
    
  7. 此时,您可以对这个分支进行任何操作。您可以运行一些本地测试,或者将其他分支合并到此分支。

  8. 准备好后,您可以将新分支推送到远程仓库。

    [pull-inactive-pull-request] $ git push origin BRANCH_NAME
    > Counting objects: 32, done.
    > Delta compression using up to 8 threads.
    > Compressing objects: 100% (26/26), done.
    > Writing objects: 100% (29/29), 74.94 KiB | 0 bytes/s, done.
    > Total 29 (delta 8), reused 0 (delta 0)
    > To https://github.com/USERNAME/REPOSITORY.git
    >  * [new branch]      BRANCH_NAME -> BRANCH_NAME
    
  9. 创建一个新的拉取请求,包含您的新分支。

错误:推送某些引用失败

远程refs/pull/命名空间是只读的。如果您尝试向其中推送任何提交,您将看到此错误。

! [remote rejected] HEAD -> refs/pull/1/head (deny updating a hidden ref)
error: failed to push some refs to '[email protected]:USERNAME/REPOSITORY.git'

提示

当您删除或重命名远程引用时,您的本地refs/pull/origin/命名空间不会受到对git-remote的调用的影响。