A página do manual para git-config lista essas opções para push.default:
nothing - do not push anything.
matching - push all matching branches. All branches having the same name in both ends are considered to be matching. This is the default.
upstream - push the current branch to its upstream branch.
tracking - deprecated synonym for upstream.
current - push the current branch to a branch of the same name.
Na maioria dos casos, eu assumiria que enviar para um branch upstream de um branch seria o mesmo que enviar para um branch com o mesmo nome, já que o branch upstream normalmente teria o mesmo nome, e já que o branch com o mesmo nome ("atual" ) normalmente (ou sempre, por definição?) estaria a montante. Qual é a diferença?
ATUALIZAÇÃO : a página de manual para git-config foi atualizada (como seria de se esperar), então as distinções feitas aqui podem ser muito mais claras agora.