Reputation: 12153
I have two different versions of git.
In the 1.6.2 version, git push
does not have the -u
option. It only appears in the 1.7.x version.
From the docs, the -u
is related to the variable
branch.<name>.merge
in git config
. This variable is described below:
Defines, together with branch.<name>.remote, the upstream branch
for the given branch. It tells git fetch/git pull which branch to merge.
What is an upstream branch ?
Upvotes: 358
Views: 154006
Reputation: 76955
"Upstream" would refer to the main repo that other people will be pulling from, e.g. your GitHub repo. The -u option automatically sets that upstream for you, linking your repo to a central one. That way, in the future, Git "knows" where you want to push to and where you want to pull from, so you can use git pull
or git push
without arguments. A little bit down, this article explains and demonstrates this concept.
Upvotes: 412
Reputation: 180
When you push a new branch the first time, use:
git push -u origin <branch>
After that, you can just type a shorter command:
git push
The first-time -u
option created a persistent upstream tracking branch with your local branch.
Upvotes: 18
Reputation: 4748
This is no longer up-to-date!
Push.default is unset; its implicit value has changed in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the traditional behavior, use:
git config --global push.default matching
To squelch this message and adopt the new behavior now, use:
git config --global push.default simple
When push.default is set to 'matching', git will push local branches
to the remote branches that already exist with the same name.
Since Git 2.0, Git defaults to the more conservative 'simple'
behavior, which only pushes the current branch to the corresponding
remote branch that 'git pull' uses to update the current branch.
The -u option does the following: For every branch that is up to date or successfully pushed, add upstream (tracking) reference, used by argument-less git-pull and other commands. So, after pushing your local branch with -u option, this local branch will be automatically linked with remote branch, and you can use git pull without any arguments.
Upvotes: 12