git fetch gets an updated list of remote branches from the remote and sets up remote branch references locally. However, it doesn’t delete stale references that no longer have a counterpart on the remote. Trying to get rid of these using the
git push -f origin:branch-name command will fail with a
remote ref does not exist error.
To delete stale remote references, you need to pass the
--prune option to
fetch like so:
git fetch --prune - [deleted] (none) -> origin/branch-name