Что означает git push -u?

У меня есть две разные версии git. В версии 1.6.2 git push не имеет опции -u. Он появляется только в версии 1.7.x.

В документах -u связан с переменной

branch.<name>.merge

в git config. Эта переменная описывается ниже:

Defines, together with branch.<name>.remote, the upstream branch 
for the given branch. It tells git fetch/git pull which branch to merge.

Что такое дочерняя ветвь?

Ответ 1

"Upstream" будет ссылаться на основное репо, которое другие люди будут вытаскивать из, например, ваш репозиторий GitHub. Опция -u автоматически устанавливает для вас вверх по течению, связывая ваше репо с центральным. Таким образом, в будущем Git "знает", куда вы хотите нажать и куда вы хотите извлечь, поэтому вы можете использовать git pull или git push без аргументов. Немного ниже, эта статья объясняет и демонстрирует эту концепцию.

Ответ 2

Это уже не актуально!

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.