I think everyone using git from command line knows this scenario:
1) Code, code, code, ...
2) Hmm, better save my progress.
$ git checkout -b myawesomefeature
$ git add .
$ git commit -m 'It works!'
$ git push
fatal: The current branch myawesomefeature has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin myawesomefeature
3) !@#$%^&
And then you just have to manually type the lengthy command above to be able to push.
After doing this quite a few times I found out, that there is a better way. You can tell git to automatically set the upstream for you by adjusting following config:
git config --global push.default current
After this, simple git push
call will push current branch to a remote branch of the same name.
But before setting this, it's a good idea to read the documentation and understand what the different options do:
- current - push the current branch to update a branch with the same name on the receiving end. Works in both central and non-central workflows.
- upstream - push the current branch back to the branch whose changes are usually integrated into the current branch (which is called @{upstream}). This mode only makes sense if you are pushing to the same repository you would normally pull from (i.e. central workflow).
- simple - in centralized workflow, work like upstream with an added safety to refuse to push if the upstream branch’s name is different from the local one.
Top comments (10)
Instead of having to type
git push --set-upstream origin myawesomefeature
the following shorter version works as well (i.e. the branch name can be omitted, it defaults to the current one, and the flag--set-upstream
has a short version-u
):I'm afraid that didn't work for me.
Can you elaborate a bit? What's the error message?
same as above post,
I'm confused. That error is expected if you just issue
git push
. My suggestion was to usegit push origin -u
(instead of the longer versiongit push --set-upstream origin myawesomefeature
).Sorry I've no idea, I've tried.
when
what's your config?
From what I understand, I think it will only work if it was push successfully before or branch exist in remote?
ref: git-scm.com/docs/git-push#Document...
I haven't set that config, I use the default (i.e.
push.default=simple
). For megit push origin -u
works.Setting
git config --global push.default upstream
I get the same error as you.The OP suggested to use
git config --global push.default current
though, which has the desired effect (i.e.git push
sets the remote branch as the tracking branch).I'm less concerned that there is a long command to type and more concerned with:
That is too SVN like and partial commits are usually more appropriate.
Partial Commits with Git
Jesse Phillips
Don't disagree, but that's just not point of this post.