threads / discuss / 55783

git push doesn't use local branch name as default

Subject: git push doesn't use local branch name as default

## tl;dr

2 messages between May 27, 2021 and May 27, 2021.

replies: 1people: 2as markdown or json

Mathias Kunter· May 27, 2021, 17:06 UTC · lore
Hi all,
at https://git-scm.com/docs/git-push#_description it says:
Show 6 quoted lines
> 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· May 27, 2021, 19:51 UTC · re: Mathias Kunter · lore

RE: git push doesn't use local branch name as default

Mathias Kunter wrote:
Show 17 quoted lines
> 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

← back to recent threads