I’ve been wondering if there’s an easy way to push and pull a local branch with a remote branch with a different name without always specifying both names.
For example:
$ git clone myrepo.git
$ git checkout -b newb
$ ...
$ git commit -m "Some change"
$ git push origin newb:remote_branch_name
Now if someone updates remote_branch_name, I can:
$ git pull
And everything is merged / fast-forwarded. However, if I make changes in my local “newb”, I can’t:
$ git push
Instead, I have to:
% git push origin newb:remote_branch_name
Seems a little silly. If git-pull uses git-config branch.newb.merge to determine where to pull from, why couldn’t git-push have a similar config option? Is there a nice shortcut for this or should I just continue the long way?
Sure. Just set your
push.defaulttoupstreamto push branches to their upstreams (which is the same thatpullwill pull from, defined bybranch.newb.merge), rather than pushing branches to ones matching in name (which is the default setting forpush.default,matching).Note that this used to be called
trackingnotupstreambefore Git 1.7.4.2, so if you’re using an older version of Git, usetrackinginstead. Thepush.defaultoption was added in Git 1.6.4, so if you’re on an older version than that, you won’t have this option at all and will need to explicitly specify the branch to push to.