Re: Convenient shortcut to push delete current branch?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Oct 1, 2015 at 2:37 PM, Robert Dailey <rcdailey.lists@xxxxxxxxx> wrote:
> On Thu, Oct 1, 2015 at 1:22 PM, Jacob Keller <jacob.keller@xxxxxxxxx> wrote:
>> On Thu, Oct 1, 2015 at 9:43 AM, Robert Dailey <rcdailey.lists@xxxxxxxxx> wrote:
>>> For convenient pushing of current branch, git supports this syntax:
>>>
>>> $ git push origin HEAD
>>>
>>> This will push your current branch up. However, is there such a
>>> shortcut for *deleting* the branch? The only goal here is to avoid
>>> having to type the branch name in the push command. Normally I rely on
>>> tab completion but we have tons of branches, all which start with some
>>> prefix mixed with numbers, so it becomes cumbersome to rely on tab
>>> completion. Ideally I'd like to be able to do:
>>>
>>> $ git push --delete origin HEAD
>>> $ git push origin :HEAD
>>>
>>> Is there a syntax like this available?
>>
>> You can do
>>
>> git push origin:<branchname>
>>
>> but I don't believe HEAD is supported. It might be valuable to extend
>> push to have a --delete option which would maybe be useful for those
>> who didn't learn the full refspec syntax.
>
> Push already has a --delete option.
>

I could see adding an option for --delete-upstream that would use the
upstream remote and ref of the current branch (if they exist).
External to git you could script this from the config (completely
untested):

    if branch=$(git symbolic-ref --short HEAD); then
        if remote=$(git config branch.$branch.remote); then
            if remote_ref=$(git config branch.$branch.merge); then
                git push $remote --delete $remote_ref
            fi
        fi
    fi

>> I don't think git push origin :HEAD makes too much sense, since that's
>> on the remote side of a refspec, and you want it interpreted
>> locally... I suppose it makes sense somewhat, but other refspecs with
>> HEAD on the remote side of the refspec don't really make sense, where
>> as HEAD always makes sense on the local side of the refspec.
>
> HEAD makes sense on the remote side if you think of it like an alias:
>
> HEAD -> branch-name -> SHA1
>
> HEAD simply points to branch-name. It makes sense for git to assume
> that we should never do anything with real HEAD ref on the remote
> side, and instead treat it as a substitution for the remote name. My
> assumption may not be correct, but at the very least it should be a
> niche case.
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]