Cosa significa git push -u?


323

Ho due diverse versioni di git. Nella versione 1.6.2, git pushnon ha l' -uopzione. Appare solo nella versione 1.7.x.

Dai documenti, il -uè correlato alla variabile

branch.<name>.merge

in git config. Questa variabile è descritta di seguito:

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

Che cos'è un ramo a monte?


Risposte:


361

"A monte" si riferisce al repository principale da cui verranno estratte altre persone, ad esempio il repository GitHub. L'opzione -u imposta automaticamente quello a monte per te, collegando il tuo repository a uno centrale. In questo modo, in futuro, Git "sa" dove vuoi spingere e da dove vuoi tirare, così puoi usare git pullo git pushsenza argomenti. Un po 'giù, questo articolo spiega e dimostra questo concetto.


19
Vedo che l'articolo a cui ti sei collegato lo evidenzia, ma dal momento che è una specie di gotcha, penso che valga la pena sottolineare che il ramo a cui viene spinto git push non è influenzato dalla configurazione del ramo a monte a meno che tu non abbia push.defaultimpostato a tracking(o upstreamnelle versioni successive di git).
Mark Longair,

non capisco perché eclipse egit offra entrambi allora?
HaveAGuess

23
@HaveAGuess Probabilmente per lo stesso motivo per cui Eclipse offre anche sia miseria che disperazione.
twiz

9

Questo non è più aggiornato!

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
Ma cosa significa bandiera -uper ora? GitHub consiglia ancora di usare questo flag quando creiamo un nuovo repository ...
Jean Paul,

8
@JeanPaul - L'opzione -u fa quanto segue: Per ogni ramo aggiornato o inviato correttamente, aggiungi il riferimento upstream (tracking), usato da git-pull senza argomenti e altri comandi. Quindi, dopo aver inviato il tuo ramo locale con l'opzione -u, questo ramo locale verrà automaticamente collegato al ramo remoto e puoi usare git pull senza alcun argomento.
Peter Piper,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.