threads / discuss / 43931

git push origin BRANCHNAME question

Subject: git push origin BRANCHNAME question

## tl;dr

3 messages between Aug 25, 2016 and Aug 25, 2016.

replies: 2people: 3as markdown or json

Ed Greenberg· Aug 25, 2016, 13:16 UTC · lore

I think I understand this from the git-push man page, but I want to make sure:

I have two branches, master and develop.

If I am (accidentally) sitting on master, and issue 'git push origin develop', does this properly push develop to remote develop, or does it push master to remote develop (which seems to be bad, in the most common use case.) ?

Thanks,
Ed
-- 
Ed Greenberg
Glens Falls, NY USA
Junio C Hamano· Aug 25, 2016, 17:50 UTC · re: Ed Greenberg · lore

Re: git push origin BRANCHNAME question

Ed Greenberg <edg@greenberg.org> writes:
Show 9 quoted lines
> I think I understand this from the git-push man page, but I want to
> make sure:
>
> I have two branches, master and develop.
>
> If I am (accidentally) sitting on master, and issue 'git push origin
> develop', does this properly push develop to remote develop, or does
> it push master to remote develop (which seems to be bad, in the most
> common use case.)  ?
You can find it out yourself quite easily, I would think.

$ git init src $ git init dst $ cd src $ git commit --allow-empty -m initial $ git checkout -b develop $ git commit --allow-empty -m second

$ git checkout master
$ git push ../dst develop
Counting objects: 3, done.
Delta compression using up to 6 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 226 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
To ../dst
 * [new branch]      develop -> develop
Jeff King· Aug 25, 2016, 18:39 UTC · re: Junio C Hamano · lore

Re: git push origin BRANCHNAME question

On Thu, Aug 25, 2016 at 10:50:23AM -0700, Junio C Hamano wrote:
Show 30 quoted lines
> Ed Greenberg <edg@greenberg.org> writes:
> 
> > I think I understand this from the git-push man page, but I want to
> > make sure:
> >
> > I have two branches, master and develop.
> >
> > If I am (accidentally) sitting on master, and issue 'git push origin
> > develop', does this properly push develop to remote develop, or does
> > it push master to remote develop (which seems to be bad, in the most
> > common use case.)  ?
> 
> You can find it out yourself quite easily, I would think.
> 
> $ git init src
> $ git init dst
> $ cd src
> $ git commit --allow-empty -m initial
> $ git checkout -b develop
> $ git commit --allow-empty -m second
> 
> $ git checkout master
> $ git push ../dst develop
> Counting objects: 3, done.
> Delta compression using up to 6 threads.
> Compressing objects: 100% (2/2), done.
> Writing objects: 100% (3/3), 226 bytes | 0 bytes/s, done.
> Total 3 (delta 1), reused 0 (delta 0)
> To ../dst
>  * [new branch]      develop -> develop
Yes, though I think the "why" is interesting here, too.

And the answer is that "develop" is a shortened refspec, whose full form is more like "develop:develop". A name with no colon is always the local source, and the implied destination is usually the same name on the remote (though it can be changed via config). The third paragraph of "<refspec>..." under OPTIONS in "git help push" covers this, though I do think it is a little hard to follow.

-Peff

← back to recent threads