Co znaczy git push -u?

323

Mam dwie różne wersje git. W wersji 1.6.2 git pushnie ma takiej -uopcji. Pojawia się tylko w wersji 1.7.x.

Z dokumentacji -ujest związany ze zmienną

branch.<name>.merge

w git config. Ta zmienna jest opisana poniżej:

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

Co to jest gałąź upstream?

Frankie Ribery
źródło

Odpowiedzi:

360

„Upstream” odnosi się do głównego repozytorium, z którego będą czerpać inni ludzie, np. Z twojego repozytorium GitHub. Opcja -u automatycznie ustawia to dla ciebie, łącząc twoje repo z centralnym. W ten sposób w przyszłości Git „wie”, gdzie chcesz naciskać i gdzie chcesz wyciągać, dzięki czemu możesz używać argumentów git pulllub git pushbez nich. Trochę w dół, ten artykuł wyjaśnia i demonstruje tę koncepcję.

Rafe Kettler
źródło
19
Widzę, że artykuł, z którym się łączysz, wskazuje na to, ale ponieważ jest to coś w rodzaju gotcha, myślę, że warto wskazać, że gałąź, na którą się popychasz, git push nie ma wpływu na konfigurację gałęzi upstream, chyba że push.defaultustawiłeś do tracking(lub upstreamw nowszych wersjach git).
Mark Longair
nie rozumiem, dlaczego więc Eclipse egit oferuje oba?
HaveAGuess,
23
@HaveAGuess Prawdopodobnie z tego samego powodu, dla którego Eclipse oferuje zarówno nieszczęście, jak i rozpacz.
twiz
9

To nie jest już aktualne!

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.
Peter Piper
źródło
1
Ale co oznacza -uteraz flaga ? Nadal zaleca GitHub, aby używać tej flagi podczas tworzenia nowego repozytorium ...
Jean Paul
8
@JeanPaul - Opcja -u wykonuje następujące czynności: Dla każdej gałęzi, która jest aktualna lub pomyślnie wypchnięta, dodaj referencję upstream (śledzenia), używaną przez bez argumentów git-pull i inne polecenia. Po wypchnięciu gałęzi lokalnej z opcją -u gałąź lokalna zostanie automatycznie połączona ze zdalną gałęzią i możesz użyć git pull bez żadnych argumentów.
Peter Piper