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

Когда я нажимаю на удаленный в Git, я получаю это предупреждение:

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

See 'git help config' and search for 'push.default' for further information.
(the 'simple' mode was introduced in Git 1.7.11. Use the similar mode
'current' instead of 'simple' if you sometimes use older versions of Git)

To **********************************
   6b9a6d2..3ab1eab  master -> master

Что означает это предупреждение и что с этим делать?


person JackSun    schedule 01.11.2013    source источник
comment
не могли бы вы дать команду толчка. ты пропустил ветку > git push upstream mybranch ?   -  person dekdev    schedule 01.11.2013
comment
для справки: stackoverflow.com/a/13148313/1060656   -  person dekdev    schedule 01.11.2013
comment
Примечание: сообщение скоро будет обновлено с помощью Git 2.0 (второй квартал 2014 г.). См. мой ответ ниже   -  person VonC    schedule 12.03.2014
comment
comment
Примечание: git 2.8 (март 2016 г.) полностью удалит это предупреждение. См. мой отредактированный ответ ниже   -  person VonC    schedule 27.02.2016


Ответы (4)


Это предупреждение появилось в Git 1.7.11 вместе со стилем отправки simple. Проблема в том, что текущее значение по умолчанию, matching, может привести к тому, что неопытные пользователи принудительно отправят ветки, когда некоторые ветки отстают от своих удаленных эквивалентов, потому что ветки просто не обновлены. Конечным результатом является то, что они в конечном итоге перематывают ветку и потенциально теряют свою работу или чью-то еще. Режим simple был представлен как новое поведение push.default и станет стандартным в Git 2.0 (который, надеюсь, выйдет в начале следующего года).

Новое поведение simple во многом похоже на настройку upstream: оно отправляет только текущую ветку, в которой вы сейчас находитесь, если у нее есть удаленная ветка, которую она отслеживает. Он добавляет один дополнительный критерий: удаленная ветка должна иметь то же имя, что и локальная.

Как вы обнаружили, избавиться от сообщения можно, установив push.default. Чтобы получить новое поведение, используйте:

git config --global push.default simple

Чтобы получить поведение Git по умолчанию, но без предупреждающего сообщения, используйте:

git config --global push.default matching

Однако я бы не советовал против использовать сопоставление. В целом, большинство людей действительно хотят нового поведения simple или upstream.

person John Szakmeister    schedule 01.11.2013

Обновление от февраля 2016 г.:

git 2.8 (март 2016 г.) удалено это большое предупреждающее сообщение.

См. commit 2f27520 (25 февраля 2016 г.) от Матье Мой (moy).
(объединено Junio ​​C Hamano -- gitster -- в commit 15be621, 26 февраля 2016)

push: удалить предупреждающее сообщение "push.default is unset"

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

Предупреждение существует с версии 1.8.0 (октябрь 2012 г.), поэтому мы можем ожидать, что подавляющее большинство нынешних пользователей Git столкнулись с ним, и большинство из них уже явно установили push.default. Переход от «совпадения» к «простому» был запланирован для версии 2.0 (май 2014 г.), но фактически произошел только для версии 2.3 (февраль 2015 г.).

Сегодня предупреждение в основном видят новички, которые еще не настроили свою push.default конфигурацию. Многих из них это предупреждение сбивает с толку, потому что оно говорит о концепциях, которые они еще не усвоили, и предлагает им сделать выбор, который они еще не могут сделать. См., например, "Предупреждение: push.default не установлен; его неявное значение изменяется в Git 2.0" (1260 голосов за вопрос, 1824 для ответа на момент написания)

Полностью удалите предупреждение, чтобы не мешать новичкам. Люди, которые все еще время от времени используют более старую версию Git, получат предупреждение через эту старую версию.

В конце концов, версий Git без предупреждения будет развернуто достаточно, и руководствам больше не нужно будет советовать устанавливать push.default.


Оригинальный ответ (март 2014 г.)

Это предупреждение скоро изменится в git 2.0 (второй квартал 2014 г.) с commit 289ca27 и коммит 11037ee:

push.default не установлен; его неявное значение изменилось в Git 2.0 с 'matching' на 'simple'.
Чтобы убрать это сообщение и сохранить традиционное поведение, используйте:

git config --global push.default matching

Чтобы подавить это сообщение и принять новое поведение сейчас, используйте:

git config --global push.default simple

Когда push.default установлено в 'matching', git будет передавать локальные ветки в удаленные ветки, которые уже существуют с тем же именем.

Начиная с Git 2.0, Git по умолчанию использует более консервативное поведение 'simple', которое только отправляет текущую ветку в соответствующую удаленную ветку, которую 'git pull' использует для обновления текущей ветки.

Дополнительную информацию см. в разделе «Почему в Git принудительно выполняется сопоставление со значением по умолчанию?».

person VonC    schedule 12.03.2014

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

  • первое клонирование моей новой ветки (UAT)
  • затем нажмите на эту ветку (UAT)
person bazi.the.developer    schedule 07.06.2016

Я решаю это, предоставляя ему имя удаленного репозитория и имя удаленной ветки (которое отслеживается).

В моем случае на гитхабе

$ git push origin main

person CoffeePlease    schedule 17.07.2021