[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