Fetch git objects from upstream and update local branches.
- If the local branch is outdated, fast-forward it;
- If the local branch contains unpushed work, warn about it;
- If the branch seems merged and its upstream branch was deleted, delete it.
If a local branch does not have any upstream configuration, but has a
same-named branch on the remote, treat that as its upstream branch.