threads / discuss / 13375

git push won't push to a local branch

Subject: git push won't push to a local branch

## tl;dr

3 messages between May 4, 2008 and May 4, 2008.

replies: 2people: 2as markdown or json

Geoffrey Irving· May 4, 2008, 18:49 UTC · lore
Hello,

There's an asymmetry between push and pull that seems unnecessary: pull can pull from local branches, but push can't push to them. Is there a reason for this asymmetry?

In more detail, if I have a working copy with two branches, local and master, I can use git pull to pull changes from master to local:

% git checkout local % git pull . master ... pulls changes from master to local branch

If I make a change in local and try to do the reverse with git push, it gives a confusing non-error message and doesn't do anything:

% git checkout local % git rm scratch/pcomm.h % git commit % git push . master Everything up-to-date

I can simulate the desired effect by switching to master and doing a pull.
% git checkout master
Switched to branch "master"
% git pull . local
Updating 0080774..7e8d678
Fast forward
 scratch/pcomm.h |  146 -------------------------------------------------------
 1 files changed, 0 insertions(+), 146 deletions(-)
 delete mode 100644 scratch/pcomm.h

I'd prefer not to have to switch my checkout to master to accomplish this, since I'll end up with a corrupted working copy if I push from somewhere else to master at the same time (I want to avoid multiple repository copies to save space).

Thanks, Geoffrey

Björn Steinbrink· May 4, 2008, 19:19 UTC · re: Geoffrey Irving · lore

Re: git push won't push to a local branch

On 2008.05.04 11:49:38 -0700, Geoffrey Irving wrote:
Show 21 quoted lines
> Hello,
> 
> There's an asymmetry between push and pull that seems unnecessary:
> pull can pull from local branches, but push can't push to them.  Is
> there a reason for this asymmetry?
> 
> In more detail, if I have a working copy with two branches, local and
> master, I can use git pull to pull changes from master to local:
> 
> % git checkout local
> % git pull . master
> ... pulls changes from master to local branch
> 
> If I make a change in local and try to do the reverse with git push,
> it gives a confusing non-error message and doesn't do anything:
> 
> % git checkout local
> % git rm scratch/pcomm.h
> % git commit
> % git push . master
> Everything up-to-date
You're pushing master to master ;-) Try "git push . local:master".
Björn
Geoffrey Irving· May 4, 2008, 20:00 UTC · re: Björn Steinbrink · lore

Re: git push won't push to a local branch

On Sun, May 4, 2008 at 12:19 PM, Björn Steinbrink <B.Steinbrink@gmx.de> wrote:
Show 26 quoted lines
> On 2008.05.04 11:49:38 -0700, Geoffrey Irving wrote:
>  > Hello,
>  >
>  > There's an asymmetry between push and pull that seems unnecessary:
>  > pull can pull from local branches, but push can't push to them.  Is
>  > there a reason for this asymmetry?
>  >
>  > In more detail, if I have a working copy with two branches, local and
>  > master, I can use git pull to pull changes from master to local:
>  >
>  > % git checkout local
>  > % git pull . master
>  > ... pulls changes from master to local branch
>  >
>  > If I make a change in local and try to do the reverse with git push,
>  > it gives a confusing non-error message and doesn't do anything:
>  >
>  > % git checkout local
>  > % git rm scratch/pcomm.h
>  > % git commit
>  > % git push . master
>  > Everything up-to-date
>
>  You're pushing master to master ;-) Try "git push . local:master".
>
>  Björn

Yep, that works. I'll remember to use -v next time I don't know what's going on.

Is there a reason for the syntax asymmetry? If git pull defaults to pulling into my current branch, why does git push default to uselessly pushing and pulling to the same branch?

Also, can I make a bare "git push" default to "git push . local:master"?
Geoffrey

← back to recent threads