Subject: Setting of push.default or confusion about refspecs

From: Kendall Shaw <[email-masked]>
Date: Mon, 03 Jun 2013 15:01:41 -0700

I am setting up a git repository which I cloned using git svn. git 
ls-remote shows something like:

...
refs/remotes/trunk
refs/remotes/2.0.2a
...

To get the subversion branch names to appear as a local branch, I:

git remote add blah http://example.com/blah
git fetch blah +refs/remotes/*:refs/heads/*

I have made changes now that are okay to be in master in my local 
repository and I want to push them to the remote repository. The current 
branch is master.

git push

complains that push.default is not set. Now, I am confused by the 
documentation.

push.default settings refer to either "the upstream branch" or a branch 
with "the same name".

What is "the same name"? Are these the same name:

master
refs/remotes/origin/master

also, after the fetch above, are these the same name:

refs/heads/something
refs/remotes/something

Regarding the upstream branch, I have in .git/config

[remote "origin"]
url = http://example.com/blah
fetch = +refs/heads/*:refs/remotes/origin/*

[branch "master"]
remote = origin
merge = refs/heads/master

git config -l shows

branch.master.remote=origin
branch.master.merge=refs/heads/master

When in branch master, is the upstream branch refs/heads/master?

Then, I think I can get push to push to refs/remotes/origin/master by 
setting push.default to upstream, is that right?

In case "master" is not the same name as "refs/remotes/origin/master", 
can you give me an example of branches with the same name that push 
would push to when push.default is set to simple?

Kendall