O que significa git push -u?


323

Eu tenho duas versões diferentes do git. Na versão 1.6.2, git pushnão tem a -uopção Ele aparece apenas na versão 1.7.x.

Dos documentos, o -uestá relacionado à variável

branch.<name>.merge

no git config. Essa variável é descrita abaixo:

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

O que é um ramo upstream?


Respostas:


360

"Upstream" se refere ao repositório principal de onde outras pessoas serão contratadas, por exemplo, seu repositório GitHub. A opção -u define automaticamente o upstream para você, vinculando seu repositório a um central. Dessa forma, no futuro, o Git "sabe" para onde você deseja enviar e para onde deseja obter, para poder usar git pullou git pushsem argumentos. Um pouco abaixo, este artigo explica e demonstra esse conceito.


19
Vejo que o artigo ao qual você se vinculou aponta isso, mas como é uma pegadinha, acho que vale a pena ressaltar que o ramo para o qual é enviado git push não é afetado pela configuração do ramo upstream, a menos que você tenha push.defaultdefinido para tracking(ou upstreamem versões posteriores do git).
Mark Longair

Eu não entendo por que eclipse egit oferece os dois então?
HaveAGuess

23
@HaveAGuess Provavelmente pela mesma razão que o Eclipse também oferece miséria e desespero.
Twiz

9

Isso não está mais atualizado!

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.

1
Mas o que significa flag -uagora? Ele ainda é recomendado por GitHub para usar esta bandeira quando criamos um novo repo ...
Jean Paul

8
@JeanPaul - A opção -u faz o seguinte: Para cada ramificação atualizada ou enviada com êxito, adicione uma referência upstream (rastreamento), usada pelo git-pull sem argumentos e outros comandos. Portanto, depois de pressionar sua ramificação local com a opção -u, essa ramificação local será automaticamente vinculada à ramificação remota, e você pode usar o git pull sem argumentos.
Peter Piper
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.