Предупреждение: push.default не установлен; его неявное значение меняется в Git 2.0

1624

Я уже некоторое время использую Git и недавно скачал обновление только для того, чтобы найти это предупреждение, когда я пытаюсь это сделать push.

warning: push.default is unset; its implicit value is changing in 
Git 2.0 from 'matching' to 'simple'. To squelch this message 
and maintain the current behavior after the default changes, use: 

  git config --global push.default matching

To squelch this message and adopt the new behavior now, use: 

  git config --global push.default simple

Я могу установить одно из упомянутых значений, но что они значат? Какая разница между simpleа matching?

Если я изменю его на одном клиенте, нужно ли мне что-то делать на других клиентах, с которыми я делюсь репо?

Marko
источник
1
Примечание: git 2.8 (март 2016) удалит это предупреждение! См. Stackoverflow.com/a/22356644/6309
VonC

Ответы:

2149

Это подробно объясняется в документации , но я постараюсь подвести итог:

  • matchingсредства git pushбудут толкать все свои местные отделения в тех с таким же названием на пульте дистанционного управления. Это позволяет легко нажать на ветку, которую вы не собирались.

  • simpleозначает, git pushчто подтолкнет только текущую ветвь к той, из которой git pullбудет извлекать , а также проверит, что их имена совпадают. Это более интуитивное поведение, поэтому значение по умолчанию меняется на это.

Этот параметр влияет только на поведение вашего локального клиента, и его можно переопределить, явно указав, какие ветви вы хотите нажать в командной строке. Другие клиенты могут иметь другие настройки, это влияет только на то, что происходит, когда вы не указываете, какие ветви вы хотите нажать .

Хаммар
источник
16
Рад знать это изменение. Когда я был новичком в git, я случайно нажал на все локальные ветки, думая, что git pushбудет толкать только текущую ветку.
rahul286
51
Мотив состоит в том, что, эмпирически, большинство ожидает нового поведения по умолчанию
Блейк Миллер
125
Было бы намного лучше иметь ваше удивительно четкое резюме в самом предупреждающем сообщении, а не инструкцию, указывающую нам открыть документацию и искать строку.
hertzsprung
116
«Это очень четко объяснено в документах». Конечно, это так, если вы окажетесь на правильной странице, однако в руководстве по git push даже нет упоминания слова « простой» , который, вероятно, таков, что многие люди оказались здесь вместо ,
Джерри
36
Резюме Хаммара - гораздо более краткое объяснение, чем git docs.
AJ.
19

Я понимаю, что это старый пост, но, поскольку я столкнулся с той же проблемой и не смог найти ответ, я решил добавить немного.

Так что ответ @ Hammar правильный. Использование push.default simple, в некотором смысле, похоже на настройку отслеживания в ваших ветвях, поэтому вам не нужно указывать удаленные узлы и ветви при толкании и вытягивании. matchingВариант будет толкать все ветви их соответствующих аналоги по умолчанию удаленной (который является первым, который был создан , если вы не настроили ваш репозиторий в противном случае).

Я надеюсь, что в будущем другие найдут для себя что-то полезное, что я запускал Git 1.8 на OS X Mountain Lion и никогда не видел этой ошибки. Обновление до Mavericks - это то, что внезапно заставило его появиться (запуск git --versionпокажет то, git version 1.8.3.4 (Apple Git-47)чего я никогда не видел до обновления ОС.

WGP
источник
2
Я также начал видеть это после обновления до Mavericks. Так что я думаю, что Git был обновлён одновременно с Mavericks, как вы и предполагали.
За Лундберг
8

Если вы получили сообщение от git с жалобой на значение simpleв конфигурации, проверьте ваш git version.

После обновления XCode(на Macработающем Mountain Lion), которое также обновилось gitс 1.7.4.4 до 1.8.3.4 , оболочки запускались до того, как обновление все еще работало с git 1.7.4.4, и жаловались на значение simpleдля push.default в глобальной конфигурации.

Решение состояло в том, чтобы закрыть оболочки, использующие старую версию gitи использовать новую версию!

Том Баррон
источник
13
Я использую новую установку XCode (git - версия 1.8.5.2), и у меня все еще была эта ошибка, пока я не запустил:git config --global push.default simple
Сэм-Грэм
2

Мне было интересно, почему я получаю это большое предупреждающее сообщение в Ubuntu 16.04 (который поставляется с Git 2.7.4), но не в Arch Linux. Причина в том, что предупреждение было удалено в Git 2.8 (март 2016 года):

При переходе к Git версии 2.0 пользователь получал довольно громкое предупреждение при запуске «git push» без установки переменной конфигурации push.default. Мы больше не предупреждаем, потому что переход был завершен давно.

Таким образом, вы не увидите предупреждение, если у вас Git 2.8 и более поздние версии, и push.defaultвам не нужно устанавливать их, если вы не хотите изменить 'simple'поведение по умолчанию .

Евгений Ярмаш
источник