跳至主要内容

本地检出拉取请求

当有人从您仓库的 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 或头部分支名。

gh pr checkout PULL-REQUEST

在本地修改不活跃的拉取请求

如果拉取请求的作者对请求不作回应或已删除其 fork,则仍然可以通过新建拉取请求来合并该拉取请求中提出的更改。但是,如果你想对拉取请求进行修改而作者未响应,则需要执行一些额外的步骤来更新该拉取请求。

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

任何人都可以使用之前打开的拉取请求继续进行开发、测试,甚至基于它打开一个包含更多更改的新拉取请求。不过,只有拥有推送权限的协作者才能合并拉取请求。

  1. 在仓库名称下方,点击 议题 拉取请求

    Screenshot of the main page of a repository. In the horizontal navigation bar, the "Issues" and "Pull requests" tabs are outlined in 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 'git@github.local:USERNAME/REPOSITORY.git'

提示

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

© . This site is unofficial and not affiliated with GitHub, Inc.