Skip to main content
We publish frequent updates to our documentation, and translation of this page may still be in progress. For the most current information, please visit the English documentation.

本地检查拉取请求

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

Who can use this feature

Anyone with write access to a repository can pull a remote pull request down locally.

注意:拉取请求创建者可授权上游存储库维护员或对上游存储库具有推送权限的人员,允许他们提交到用户拥有的分支中其拉取请求的比较分支。 有关详细信息,请参阅“允许更改从复刻创建的拉取请求分支”。

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

  1. 在存储库名称下,单击 “拉取请求”。 拉取请求选项卡选择
  2. 在拉取请求列表中,单击要修改的拉取请求。
  3. 在合并框中,单击“命令行说明”。 按照步骤顺序解决提议的拉取请求。 访问命令行拉取请求说明的链接
  4. (可选)若要在 GitHub Desktop 中查看提议的更改,请单击“在 GitHub Desktop 中打开”。 在 Desktop 中本地打开拉取请求的链接

若要详细了解 GitHub CLI,请参阅“关于 GitHub CLI”。

若要在本地签出拉取请求,请使用 gh pr checkout 子命令。 将 pull-request 替换为拉取请求的数字、URL 或主分支。

gh pr checkout PULL-REQUEST

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

如果拉取请求的作者对请求无响应或已删除其分叉,该拉取请求还是可以合并。 但是,如果您要对拉取请求进行更改,而其作者又没有响应,则需要执行一些额外步骤来更新拉取请求。

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

任何人都可以处理先前打开的拉取请求,以继续处理它、测试它,甚至进行一些额外更改后作为新的拉取请求打开它。 但是,只有具有推送权限的协作者才能合并拉取请求。

  1. 在存储库名称下,单击 “问题”或 “拉取请求” 。 问题和拉取请求选项卡选择
  2. 在“Pull Requests(拉取请求)”列表中,单击要合并的拉取请求。
  3. 找到非活动拉取请求的 ID 号。 这是拉取请求标题后面的数字序列。 拉取请求 ID 号 1. 打开终端终端Git Bash
  4. 根据其 ID 号获取对该拉取请求的引用,在该过程中创建一个新分支。
    $ git fetch origin pull/ID/head:BRANCH_NAME
  5. 切换到基于此拉取请求的新分支:
    [main] $ git checkout BRANCH_NAME
    > Switched to a new branch 'BRANCH_NAME'
  6. 现在,您可以使用此分支执行任何操作。 您可以运行一些本地测试,或者将其他分支合并到该分支。
  7. 准备就绪后,可以向上推送新分支:
    [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://HOSTNAME/USERNAME/REPOSITORY.git
    >  * [new branch]      BRANCH_NAME -> BRANCH_NAME
  8. 使用新分支创建新的拉取请求

错误:无法推送某些 ref

远程 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 的调用的影响。