git push NOT current branch to remote

All those “another another” in the original question, the answer and lots of comments are so confusing (which is a perfect example of why it is important to name your things right in the first place), I can’t help helping (pun not intended) to write yet another answer as below.

Q: Is there a way in git (bare) repository to push a branch that is not in HEAD right now? For example i have two branches and two remotes. I need to be able push from feature to upstream/feature just in one command without changing HEAD.

$ git branch
* master
  feature
$ git remote
origin
upstream

A: Do git push remote_name branch_name. In the case above, it looks like this.

$ git push upstream feature

Q: Does it mean that it will push local feature to upstream/feature? I always thought it will push current HEAD to upstream/feature.

A: Yes. The feature part is a refspec, which has the form src:dst. This means to push the local branch src to the remote branch dst. If :dst is omitted, the local branch src is pushed to the remote branch src. You can specify a different name as remote branch too. Just do:

$ git push upstream feature:cool_new_feature

(Thanks @gabriele-petronella and @alexkey for providing materials for this answer.)

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)