My situation is:

$ git status
# On branch stable
nothing to commit (working directory clean)
$ git checkout master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 857 commits.

push

master branch is behind the remote origin/master and actually I need to git pull origin master before doing some work on it locally. (or possibly just git fetch originYour branch is ahead of 'origin/master' by 857 commits.

behind

Or does it really mean: "The HEAD of the remote master branch is ahead of your local origin/master tracking branch" ?

update

more info

here is what I guess may be the relevant part of output from git config -l

remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
remote.origin.url=https://code.google.com/a/google.com/p/xxxxx/
branch.master.remote=origin
branch.master.merge=refs/heads/master
branch.master.mergeoptions=--no-ff



Answers
 
You are over thinking this. The message isn't saying the remote is behind. It's saying your local repository's recorded commit for 'origin/master' is. At no point in generating that message did git communicate with a remote. It simply looked into the .git directory, and returned the contents of .git/refs/remotes/origin/master. Try it yourself. Both of these commands should return the same thing from the top-level of the repository:


cat .git/refs/remotes/origin/master
git rev-parse origin/master
The second command is simply a plumbing command for finding the 'origin/master' pointer. You could replace 'origin/master' with any branch to get the most recent commit on that branch.


That message is telling you is that your local 'master' is ahead of the commit returned by 'git rev-parse origin/master' by 857 commits. How did this situation arise? I can't say exactly, but I'd put considerable money on you accidentally merging a different branch into 'master'. Every time I've seen this problem, it's a bad merge from user error.


First, issue git fetch origin to make sure that 'origin/master' pointer is up-to-date. Then, study your git log. Look for something recent you don't expect. Download a program like tig or use gitk to get a visual graph of your commit history. It's a good bet you accidentally issued git pull stable while checked out on 'master'. Or something similar.