Pulling and pushing with git can be a bit verbose. This post explains how to get from
git pull --rebase origin master and
git push origin master to just typing
git pull and
First, set rebase for every new upstream branch (Why rebase? It makes your history easier to understand.)
git config --global branch.autosetuprebase always
This is explained in more detail (and with other helpful hints) in Mislav Marohnić’s post A few git tips you didn’t know about.
git push only send the current branch to its matching upstream (aka tracking) branch. (Otherwise the default behavior is to push all branches that have the same name on both ends.)
git config --global push.default upstream
This is covered in some detail in Mark Longhair’s post An asymmetry between git pull and push.
On any existing branches, you can set up tracking by doing an explicit push:
git push -u origin branchname
At this point you should be set according to all the tutorials I came across. In my experience, however, this only works for branches other than master. A plain
git push on master yields the error:
fatal: The current branch master has multiple upstream branches, refusing to push.
The solution is to set the default refspec for git push. I’m unclear on why this needed for master but not for other branches.
git config remote.origin.push HEAD