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

1652

Я использовал 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?

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

Показать ещё 1 комментарий
Теги:
version-control

4 ответа

2118
Лучший ответ

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

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

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

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

  • 15
    Рад знать это изменение. Когда я был новичком в git, я случайно нажал все локальные ветви, думая, что git push будет толкать только текущую ветку.
  • 2
    Есть ли мотив этого изменения?
Показать ещё 17 комментариев
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), который я никогда не видел до обновления ОС.

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

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

После обновления XCodeMac running 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
1

Мне было интересно, почему я получил это большое предупреждающее сообщение на 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 вам не нужно устанавливать push.default если вы не хотите изменять поведение "по-умолчанию 'simple' по умолчанию.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню