Skip to content

Instantly share code, notes, and snippets.

@robertpainsi
Last active March 21, 2024 10:45
Show Gist options
  • Save robertpainsi/2c42c15f1ce6dab03a0675348edd4e2c to your computer and use it in GitHub Desktop.
Save robertpainsi/2c42c15f1ce6dab03a0675348edd4e2c to your computer and use it in GitHub Desktop.
How to reopen a pull-request after a force-push?

How to reopen a pull-request after a force-push?

Precodinitions

  • You need the rights to reopen pull requests on the repository.
  • The pull request hasn't been merged, just closed.

Instructions

  1. Write down the current commit hash of your PR-branch git log --oneline -1 <PR-BRANCH>
  2. Write down the latest commit hash on github before the PR has been closed.
  3. git push -f origin <GITHUB-HASH-FROM-STEP-2>:<PR-BRANCH>
  4. Reopen the PR.
  5. git push -f origin <HASH-FROM-STEP-1>:<PR-BRANCH>

Example

You've a PR branch my-feature currently at 1234567. Looking at the the PRs page, we see that the PR was closed when my-feature pointed at 0abcdef.

  • git push -f origin 0abcdef:my-feature #pushing the old commit the PR has been closed with
  • Reopen the PR.
  • git push -f origin 1234567:my-feature #pushing the latest commit
@pljones
Copy link

pljones commented Apr 19, 2023

Brilliant! Thanks!

@hinell
Copy link

hinell commented Apr 22, 2023

How come that devs at github fucked up so hard, so we have to push/pull forth and back just to make PR working?

@koenigr
Copy link

koenigr commented Jun 13, 2023

Thank you very much !!!!

@jw3215
Copy link

jw3215 commented Jun 16, 2023

Thanks a lot !!!

@zyqxd
Copy link

zyqxd commented Jan 3, 2024

This issue essentially is due to your PR and your origin branches having mismatching histories (caused by a force push after that PR closed). If your PR has multiple commits, you may need to reset the entire branch. For example

If your PR commit history is:

sha-0123 <- head
sha-1234
sha-2345

But your origin branch history is

sha-3210 <- head
sha-4321
sha-5432

You need to do reset your origin head to sha-0123, then force push your new history head to sha-3210:

# if you don't have commit `sha-0123`;
git fetch sha-0123
git co FEATURE-BRANCH
git reset sha-0123 --hard
git push --force
# **You should be able to reopen your PR at this point**
# reset to `sha-3210` on the same branch
git reset sha-3210 --hard
git push --force

@stceum
Copy link

stceum commented Jan 27, 2024

Thanks a lot !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment