GitHub: you cannot push to a pull request branch in a fork
To commit to a pull request branch created from a fork, you need push access to the base repository, permission from the pull request creator, and a user-owned fork without branch restrictions that prevent your push. Only the pull request creator can allow edits to their fork (GitHub's committing changes to a pull request branch created from a fork, checked October 27, 2026).
What has to be true
- Push access upstream: the author can give maintainers of the upstream repository, that is anyone with push access to it, permission to commit to the compare branch.
- Allow edits from maintainers: on a user-owned fork, the author selects it when creating the pull request, or later on the pull request page. If the fork contains GitHub Actions workflows, the option is Allow edits and access to secrets by maintainers: it also lets a maintainer edit the fork workflows, which can potentially reveal values of secrets and grant access to other branches (GitHub's allowing changes to a pull request branch created from a fork).
- A fork owned by an organization: push permissions cannot be given to a fork owned by an organization; only a fork in a personal account offers the option (GitHub's permissions of forks).
- Rules on the branch: push rules apply to the entire fork network, so the push rulesets of the upstream repository apply to the fork as well, and only the people with bypass permissions in the root repository can bypass them (see push rules).
- In the API: the pull request field
maintainer_can_modifyindicates whether maintainers can modify the pull request (GitHub's REST API endpoints for pull requests).
Pushing to the fork
- Clone the fork: clone the fork where the pull request branch was created, check out the compare branch shown at the top of the pull request, commit, then
git push origin BRANCH. The new commits appear on the original pull request. - Not refs/pull/: the head GitHub keeps for every pull request is under
refs/pull/, which is read-only; pushing there fails withdeny updating a hidden ref(see pull request not checked out).
What to do
- Ask the author: only the person who opened the pull request can select Allow edits from maintainers.
- When it cannot be allowed: for a fork owned by an organization, or an author who does not answer, fetch the pull request by its number, push your own branch, and open a new pull request with the changes. GitHub says the changes of a pull request whose author is unresponsive, or has deleted their fork, can still be merged through a new pull request (GitHub's modifying an inactive pull request locally).
GitHub pull requests in IntelliJ IDEA
Pull Request Inbox for GitHub, a plugin by Lesstep for JetBrains IDEs 2024.1 or later, shows a pull request's reviews, checks and conversations next to the diff, and merges it with the methods the target branch allows. Its Checkout fetches a pull request from a fork from the head GitHub keeps for it, into a local branch named after the pull request, such as pr/42-fix-login, in the repository you cloned and not in the fork, so commits pushed from it do not reach the pull request. The branch has no upstream, so a push from the IDE offers a new branch of its own name, which can be opened as a new pull request; to commit to the fork branch, clone the fork as above. The review inbox, diffs and conversations are free; approving, commenting, resolving and merging are Pro (US$1.50 a month, with a 30-day trial).
GitHub is a trademark of GitHub, Inc.; IntelliJ IDEA is a trademark of JetBrains s.r.o. This page is not affiliated with or endorsed by GitHub, Inc. or JetBrains.
More: GitHub merge refused (405, 409) · GitHub review refused (422) · GitHub search 422 "Validation Failed" · "Resource not accessible by personal access token" · 401 "Bad credentials" · "Resource protected by organization SAML enforcement" · "API rate limit exceeded" · GitHub diff 406 "too_large", 3,000 files · GitHub line comment 422 "must be part of the diff" · GitHub branch update refused (422) · GitHub pull request not created (422, 403) · GitHub auto-merge refused · GitHub draft, ready for review or close refused · GitHub conversation not resolved · GitHub checks not shown (check runs 403) · GitHub file contents not read · GitHub compare refused (404, 422) · GitHub comment or reply refused (403 locked, archived) · GitHub merge method not allowed (405) · GitHub branch not found (404, 301) · GitHub Enterprise Server not reached · GitHub review request not shown · GitHub pull request list incomplete · GitHub 404 Not Found, renamed repositories (301, 307) · GitHub line comment outdated or not on the diff · GitHub pull requests not updating, notifications late · GitHub suggested change cannot be applied · GitHub required check stuck at "Expected" · GitHub code owner review required · GitHub merge blocked by unresolved conversations · GitHub merge blocked by unsigned commits · GitHub branch that merges through a merge queue · GitHub merge waiting for an approval of the most recent push · GitHub merge waiting for code scanning results · GitHub merge waiting for code quality results · GitHub merge blocked by a code coverage threshold · GitHub merge blocked by license compliance results · GitHub branch locked or its updates restricted · GitHub branch not deleted after merging · GitHub merge waiting for a team's approval (Required reviewers) · GitHub merge blocked by secret scanning alerts · GitHub stacked pull request not merging · GitHub push blocked by push rules · GitHub merge blocked by commit metadata rules · GitHub force push blocked · GitHub issue not closed by a merged pull request · GitHub pull request not checked out locally · GitHub pull request has merge conflicts · GitHub changes requested and dismissing a review · GitHub co-author not credited for a commit · GitHub dependency review check failed · GitHub Dependabot not rebasing its pull request · GitHub fork not syncing with upstream · GitHub pull request base branch not changing · GitHub pull request not reverting · GitHub pull request template not showing · GitHub pull request labels or assignees not added · GitHub pull request not closing or reopening · GitHub push blocked by push protection · GitHub pull request comment hidden · GitHub pull request blocked until deployments succeed · GitHub team review request replaced by members · GitHub pull request file no longer marked Viewed · GitHub pull request marked merged without being merged · GitHub Copilot review does not count as an approval · GitHub checks not running on a pull request a workflow created · GitHub Update branch button not shown on a pull request · GitHub checks failing on a Dependabot pull request · GitHub checks failing on a pull request from a fork · GitHub checks skipped by [skip ci] in a commit message · GitHub checks gone after the retention period · GitHub code review limits in a public repository · GitHub pull requests turned off or limited in a repository · GitHub checks run on every pull request in a stack · GitHub pull request showing commits already squash merged · GitHub pull request not showing a file diff · GitHub check cancelled on a pull request · GitHub Rebase and merge not available · GitHub merge commit message not what you expected · GitHub pull request shows every line changed · GitHub API request timed out · GitHub pull request image or document diff not shown · GitHub review request refused (422) · GitHub pull request from Copilot: checks not running, approval not counted · GitHub push refused: GH006 and GH013 on a protected branch · GitHub "At least 1 approving review is required", approvals that do not count · GitHub pull request plugins for IntelliJ IDEA, compared · 日本語