threads / discuss / 23265

git push refspec to specify tracking branch

Subject: git push refspec to specify tracking branch

## tl;dr

3 messages between Mar 31, 2010 and Mar 31, 2010.

replies: 2people: 2as markdown or json

Kevin Ballard· Mar 31, 2010, 01:06 UTC · lore
Is there any way in a refspec to specify the tracking branch corresponding to a local branch? Specifically, I want to be able to write some variant of `git push origin +foo` and have it push foo to its tracking branch. I can't find any way to do that according to the current documentation.
-Kevin Ballard
Avery Pennarun· Mar 31, 2010, 01:19 UTC · re: Kevin Ballard · lore

Re: git push refspec to specify tracking branch

On Tue, Mar 30, 2010 at 9:06 PM, Kevin Ballard <kevin@sb.org> wrote:
Show 5 quoted lines
> Is there any way in a refspec to specify the tracking branch
> corresponding to a local branch? Specifically, I want to be able to
> write some variant of `git push origin +foo` and have it push foo to
> its tracking branch. I can't find any way to do that according to
> the current documentation.

This is probably a stupid suggestion, but since you're only likely to have a single local branch corresponding to a particular remote branch, the easiest answer is to rename your local branch to have the same name :)

Otherwise, what you probably want is:
   git push origin localbranchname:remotebranchname
You can also delete a remote branch:
   git push origin :remotebranchname
Have fun,
Avery
Avery Pennarun· Mar 31, 2010, 03:24 UTC · lore

Re: git push refspec to specify tracking branch

On Tue, Mar 30, 2010 at 10:24 PM, Kevin Ballard <kevin@sb.org> wrote:
Show 8 quoted lines
> On Mar 30, 2010, at 6:19 PM, Avery Pennarun wrote:
>> git push origin localbranchname:remotebranchname
>
> Yes that works, but it's annoying to type out every time, especially when my
> branch has a long name and I don't want to risk typos. Even worse, the
> tab-completion in bash uses `git ls-remote` to complete the remote part of
> refspecs, so it's even slower to type "foo:kba<tab>" than it is to type
> "foo:kballard/foo".

You might consider creating a separate 'remote' entry then in your .git/config. You should be able to reconfigure the refspec on that one to use a particular branch name instead of a wildcard. It's not exactly pretty, but laziness will be laziness.

A similar option would be to just make a shell alias and be done with it:
savebranch()
{
    git push origin $1:kballard-$1
}
Have fun,
Avery

← back to recent threads