Checking out GitHub pull requests to a local branch

After some trial and error, here’s how I check out Github pull requests to a local branch with tracking.

Edit .git/config, add the following line in the section for the desired remote.

fetch = +refs/pull/*/head:refs/remotes/origin/pr/*

Ensure to add it before the existing line for remote branches, e.g.

[remote "origin"]
  url = git@github.com:user/repo
  fetch = +refs/pull/*/head:refs/remotes/origin/pr/*
  fetch = +refs/heads/*:refs/remotes/origin/*

Run git fetch and see all the new remote “branches” appear.

Now you can check out a PR branch: git checkout pr/123

Even better, you can create a worktree for each PR you want to review:

git worktree add pr-123 pr/123
cd pr-123
# review review review
cd ..
git worktree remove pr-123

This also allows you to track the remote ref, so if the PR receives additional commits you can just pull them down.