# git push doesn't use local branch name as default

2 messages from 2021-05-27 to 2021-05-27. Participants: Mathias Kunter, Felipe Contreras.
Thread: https://gitlist.dev/t/55783

## Mathias Kunter, 2021-05-27 17:06

Subject: git push doesn't use local branch name as default
Message-ID: <065528bf-b496-83d3-767d-2a78e50a9edf@gmail.com>
URL: https://gitlist.dev/e/065528bf-b496-83d3-767d-2a78e50a9edf%40gmail.com

```
Hi all,

at https://git-scm.com/docs/git-push#_description it says:

> When neither the command-line nor the configuration specify what to
> push, the default behavior is used, which corresponds to the simple
> value for push.default: the current branch is pushed to the
> corresponding upstream branch, but as a safety measure, the push is
> aborted if the upstream branch does not have the same name as the local
> one.

However, on a branch which does *not* have an upstream branch 
configured, the command

> git push <remote_name>

doesn't use the local branch name as default, but fails with an error 
instead:

> fatal: The current branch master has no upstream branch.
> To push the current branch and set the remote as upstream, use
> 
> git push --set-upstream <remote_name> master

Note that it *does* work if the remote branch name is explicitly specified:

> git push <remote_name> <branch_name>

But shouldn't this also work without having to explicitly specify the 
remote branch name, and default to the local branch name instead?


[System Info]
git version:
git version 2.31.1.windows.1
cpu: x86_64
built from commit: c5f0be26a7e3846e3b6268d1c6c4800d838c6bbb
sizeof-long: 4
sizeof-size_t: 8
shell-path: /bin/sh
feature: fsmonitor--daemon
uname: Windows 10.0 19042
compiler info: gnuc: 10.2
libc info: no libc information available
$SHELL (typically, interactive shell): <unset>


[Enabled Hooks]

```

## Felipe Contreras, 2021-05-27 19:51

Subject: RE: git push doesn't use local branch name as default
Message-ID: <60aff85261fcf_26530208a@natae.notmuch>
URL: https://gitlist.dev/e/60aff85261fcf_26530208a%40natae.notmuch
In-Reply-To: <065528bf-b496-83d3-767d-2a78e50a9edf@gmail.com>

```
Mathias Kunter wrote:
> Hi all,
> 
> at https://git-scm.com/docs/git-push#_description it says:
> 
> > When neither the command-line nor the configuration specify what to
> > push, the default behavior is used, which corresponds to the simple
> > value for push.default: the current branch is pushed to the
> > corresponding upstream branch, but as a safety measure, the push is
> > aborted if the upstream branch does not have the same name as the local
> > one.
> 
> However, on a branch which does *not* have an upstream branch 
> configured, the command
> 
> > git push <remote_name>
> 
> doesn't use the local branch name as default,

Yes it does, but only on the src side of the refspec. Something like:

  git push <remote_name> <branch_name>:

(invalid refspec)

Note the remote side is missing, so git doesn't know where to push to.

> Note that it *does* work if the remote branch name is explicitly specified:
> 
> > git push <remote_name> <branch_name>

In that case git assumes you mean <branch_name>:<branch_name>.

Sounds like you want to change the default to `push.default=current`.

Cheers.

-- 
Felipe Contreras

```
