Question: So I have a project checkout out and the master branch points to one repo, while the site-development branch points to another repo.

The site-development branch points to a repo with a remote name of site.

When I do a `git pull site master` I see:

```
$ git pull site master
From github.com:AdamKyle/freya-framework-site
 * branch            master     -> FETCH_HEAD
Already up-to-date.

```

So when I do a `git push site master` I get:

```
$ git pull site master
From github.com:AdamKyle/freya-framework-site
 * branch            master     -> FETCH_HEAD
Already up-to-date.
vagrant@vagrantpress:/vagrant/wordpress/wp-content/themes/freya-theme$ git push site master 
To git@github.com:AdamKyle/freya-framework-site.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:AdamKyle/freya-framework-site.git'
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart. Check out this branch and integrate the remote changes
hint: (e.g. 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

```

Both this branch and the master branch are up to date. What's going on?

Answer: 
I believe that your local copy of master is behind the master on "site".

I made two repos for demonstration:

```
$ git status
On branch asdf
nothing to commit, working directory clean

$ git pull site master
From file:///tmp/site
 * branch            master     -> FETCH_HEAD
Already up-to-date.

$ git push site master
To file:///tmp/site
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'file:///tmp/site'
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart. Check out this branch and integrate the remote changes
hint: (e.g. 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
$

```

Local "asdf" is up-to-date with "site's" master, but my local master is not.

Pushing local "master" to "site" fails, since remote master is ahead.
Use the --force flag. 

```
git push site master --force

```