Что является результатом `git push origin`? - PullRequest
8 голосов
/ 03 января 2011

Я работал в своей локальной ветке, foo.Затем я хотел подтолкнуть эту новую ветку к источнику, чтобы другие могли работать над ней.Обычный способ сделать это:

git push origin foo:foo

Что я в итоге и сделал, и все заработало полностью, как и ожидалось, подтолкнув 61 объект.Прежде чем сделать это, я по прихоти попытался:

git push origin

Подумав, может быть, по умолчанию будет создана новая удаленная ветка на основе имени моей локальной ветки.Выходной сигнал был обычным, только 13 объектов сдвинуты вверх.Результаты были незаметны.Ничего нового не появилось для других разработчиков или в моем локальном репо после выборки.

Итак, что думает Git, я говорю это делать, когда я делаю git push origin, и какой эффект, если таковой был, сделалэто есть на моем удаленном репо?

Ответы [ 2 ]

12 голосов
/ 03 января 2011

Это зависит от вашей версии git. В старой версии, он будет пытаться подтолкнуть каждую местную ветвь, которая также присутствует на отдаленной стороне. Начиная с версии 1.6.3, поведение контролируется параметром конфигурации push.default.

Значения:

  • matching: [ по умолчанию ] выдвинуть все ветви с одинаковым локальным и удаленным именем
  • nothing: ничего не нажимать
  • tracking: будет выдвигать текущую ветвь, только если она отслеживает отдаленную ветвь
  • current: подтолкнет текущую ветвь
3 голосов
/ 17 марта 2012

Июнь 2012: [ANNOUNCE] Git 1.7.11.rc1

Новый режим для push, "simple" ,который представляет собой пересечение между "current" и "upstream" , было введено.
"git push" без каких-либо refspec вытолкнет текущую ветвь в ту жеимя в удаленном хранилище только в том случае, если оно настроено на отслеживание ветки с тем же именем там .
Планируется сделать этот режим новым значением по умолчанию, если push.default не настроен.


Март 2012: Осторожно: эта политика "соответствия" по умолчанию может скоро измениться
(через некоторое время после Git1.7.10 +)
:

См. " Пожалуйста, обсудите: что должен делать "git push", когда вы не говорите, что нажимать?"

В текущей настройке (то есть push.default=matching), git push без аргумента будет выдвигать все ветки, существующие локально и удаленно, с одинаковыми именами .
Это обычно подходит, когда разработчик проталкивает свои собственные публикации.c хранилище, но может сбивать с толку, если не опасно при использовании общего хранилища.

Предложение состоит в том, чтобы изменить значение по умолчанию на 'upstream' , то есть подтолкнуть только текущую ветвь и выдвинуть ее в ветвь, которую git pull вытянет из.
Другой кандидатis 'current';при этом только текущая ветвь перемещается в удаленную ветвь с тем же именем.

То, что обсуждалось до сих пор, можно увидеть в этой теме:

http://thread.gmane.org/gmane.comp.version-control.git/192547/focus=192694

Предыдущие соответствующие обсуждения включают в себя:

Присоединиться к обсуждениюотправьте свои сообщения по адресу: git@vger.kernel.org

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...