Consider the following interaction I've just had with git:
$ git branch
* branch_A
branch_B
branch_C
$ git push
To git@thing.com:repo.git
! [rejected] branch_B -> branch_B (non-fast-forward)
! [rejected] branch_C -> branch_C (non-fast-forward)
error: failed to push some refs to 'git@thing.com:repo.git'
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart. Check out this branch and merge the remote changes
hint: (e.g. 'git pull') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
I have not touched branches B or C since I last pulled them (though the remote has been updated). No one else has touched the remote branch A, which is my personal feature branch. Also, my local branch A does not have a divergent history; it's just one commit ahead of the remote branch A.
Why is this happening? How do I get around it?