Що означає git push -u?


323

У мене є дві різні версії 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
Дивіться також stackoverflow.com/questions/2739376 / ...
VonC

Відповіді:


360

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


19
Я бачу, що стаття, з якою ви посилаєтесь, це вказує на це, але оскільки це щось з придурків, я думаю, що варто зазначити, що на гілку, на яку натиснуто git push , не впливає конфігурація гілки вище за течією, якщо ви не push.defaultвстановили до tracking(або upstreamв пізніших версіях git).
Марк Лонгейр

я не розумію, чому затемнення egit пропонує і те, і інше?
HaveAGuess

23
@HaveAGuess Можливо, з тієї ж причини, що Eclipse також пропонує і нещастя, і відчай.
twiz

9

Це більше не актуально!

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
Але що зараз -uстоїть прапор ? GitHub все ще рекомендує використовувати цей прапор, коли ми створюємо нове репо ...
Жан Пол

8
@JeanPaul - Параметр -u виконує наступні дії: Для кожної гілки, яка є актуальною або успішно натиснутою, додайте посилання вгору за потоком (відстеження), використовуваним без аргументів git-pull та іншими командами. Отже, після натискання на вашу локальну гілку з опцією -u, ця локальна гілка буде автоматично пов’язана з віддаленою гілкою, і ви можете використовувати git pull без жодних аргументів.
Пітер Пайпер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.