git push NOT current branch to remote
With git push
you can specify the remote and the local
git push remotename branchname
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.)