[dmd-internals] Git question: How do I push a *single* branch?

Martin Nowak dawg at dawgfoto.de
Mon Nov 21 03:35:12 PST 2011


On Mon, 21 Nov 2011 11:31:50 +0100, Don Clugston  
<dclugston at googlemail.com> wrote:

> On 21 November 2011 10:12, Jonathan M Davis <jmdavisProg at gmx.com> wrote:
>> On Monday, November 21, 2011 10:01:30 Don Clugston wrote:
>>> In my local repository I have two branches, branch1 and branch2.
>>> I publish branch1 to github:
>>> git push origin : branch1
>>> A side-effect of this, is that it automatically makes branch1 a remote
>>> tracking branch.
>>>
>>> Now, I add an extra commit to branch1, but I don't want to push it yet.
>>> But I do want to push branch2.
>>> So I type:  git push origin : branch2
>>> This creates branch2, BUT it also pushes branch1 as well!
>>> How do I stop this?
>>>
>>>  I can't see anything in the manual for git push that explains this.
>>> How can I push branch2 *only* ?
>>
>> I would do
>>
>> git-push origin branch1
>>
>> That only pushes branch1 regardless of what's going on in other  
>> branches. It
>> creates the branch in origin if it doesn't exist there and updates it
>> otherwise. You then _remove_ a branch in origin by doing
>>
>> git-push origin :branch1
>>
>> So, I'm surprised that
>>
>> git-push origin : branch1
>>
>> isn't deleting branch1 in origin. I guess that the space makes all the
>> difference. I'd have to go digging throught Pro Git and the like to  
>> know what
>>
>> git-push origin : branch1
>>
>> is really doing.
>
> Thanks, you're right!
>
> Turns out that " : " (with spaces) means "push everything".
>
They would have done better to only allow '+:' to push matching branches.

> So:
> git push origin : branch1  ---> push everything. The "branch1"
> argument is irrelevant, except that it must exist locally
It says matching, so the need to exist locally and at the remote site.
I think 'git push origin :' is actually equivalent to 'git push origin'.

> git push origin:branch1    --> (this is an error)
> git push origin origin:branch1 --> push currently active branch to
> remote branch1, which must already exist.
This is a little odd but origin implicitly matches  
refs/remotes/origin/HEAD.

> git push origin :branch1   ---> delete remote branch1
As in pushing an empty sha-1 to a branch.

> git remote rm branch1     ---> delete config section remote.branch1
> git branch rm branch1     ---> copy branch1 to new branch called 'rm'
> Use --force to make a git command do something that may cause loss of
> information, except for git branch, where you convert the option to
> uppercase instead.
> _______________________________________________
> dmd-internals mailing list
> dmd-internals at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/dmd-internals

Another neat feature is being able to specify relative commits or SHA-1s  
as src ref like
'abcdef1:master' or 'HEAD~2:master'.


More information about the dmd-internals mailing list