Значение сообщения GitHub: push отклонено из-за ограничений конфиденциальности электронной почты

204

Я принял и объединил запрос на извлечение на github, и теперь я не могу больше получать свои коммиты.

Сообщение:

! [remote rejected] master -> master (push declined due to email privacy restrictions)
error: failed to push some refs to 'git@github.com:FranckFreiburger/vue-resize-sensor.git'


git did not exit cleanly (exit code 1) (3838 ms @ 12/04/2017 21:23:11)

Что мне теперь делать ?

Франк Фрайбургер
источник
1
Я нашел страницу документации: help.github.com/en/github/…
Себастьян Норр
Канонический (автономный) ответ: Winfried's Your push опубликовал бы ошибку личного адреса электронной почты
Питер Мортенсен

Ответы:

402

Удаленный репозиторий был настроен так, чтобы запретить вам отправлять коммит, который бы раскрыл ваш личный адрес электронной почты. Например, в GitHub вы установили флажки Блокировать запросы командной строки, которые открывают мой почтовый ящик, чтобы включить это .

Блокировка командной строки, которая выставляет мою электронную почту

Хотя вы, конечно, можете снять этот параметр, он предоставит ваш личный адрес электронной почты всем в мире, поскольку информация об авторах доступна для чтения любому, кто имеет доступ к вашему хранилищу.

Вместо этого сделайте это:

  1. Вы можете увидеть свой личный адрес электронной почты, который по умолчанию используется для ваших коммитов в Git:

    git config --global user.email
  2. Найдите свой адрес GitHub как обычно в Личных настройках GitHub → Электронная почта . Это упомянуто в описании флажка Сохранить мой адрес электронной почты частным . Обычно он начинается с уникального идентификатора плюс ваше имя пользователя:

    {ID}+{username}@users.noreply.github.com

    Оставьте мой адрес электронной почты закрытым

  3. Измените настройку глобального адреса электронной почты пользователя, чтобы он был вашим адресом GitHub noreply:

    git config --global user.email {ID}+{username}@users.noreply.github.com
  4. Сбросьте информацию об авторе в вашем последнем коммите:

    git commit --amend --reset-author

    Если у вас есть несколько коммитов с вашим личным адресом электронной почты, посмотрите этот ответ .

  5. Теперь вы можете отправить фиксацию с помощью noreply адреса электронной почты, и у будущих коммитов будет также noreply адрес электронной почты.

    git push
Даниэль А.А. Пельсмакер
источник
4
Нет, это сработало как заклинание на моей стороне, может быть, вы забыли шаг, @adamczi. Это должен быть принятый ответ, поскольку в нем указаны оба возможных решения.
Иоанна
4
Спасибо, думаю, я мог сделать ошибку в шаге 2. Стоит заметить, что вы должны явно следовать инструкциям @ Virtlink, потому что задаете для электронной почты значение, отличное от <your_uname>@users.noreply.github.com(например, для меня установлено значениеNone ), приведет к тому, что ваши коммиты не будут отображаться в график на странице вашего профиля.
adamczi
3
У меня была похожая загадочная проблема. Моя ошибка заключалась в том, git commit --amend --author "first last me@users.noreply.github.com"что это не понравилось. Вы действительно нужно сбросить user.emailпараметр конфигурации точно так же, как указано выше. Ура!
msanford
6
Шаг 4, который обеспечивает Virtlink выше, был критически важен для моего преодоления этой ошибки. Я настроил user.email в конфигурации, чтобы использовать мой адрес электронной почты без ответа, но команда Push по-прежнему возвращала разочаровывающую ошибку при публикации личной электронной почты. Как только я исправил коммит, который пытался нажать, он разрешил толчок.
чайник
3
Вы можете изменить адрес электронной почты только для одного хранилища. Этот ответ был полезен, но мне также пришлось обратиться к справочной статье github: настройка адреса электронной почты для одного репозитория
gfullam
146

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

Попробуйте снять флажок «Блокировать командные строки, которые раскрывают мою электронную почту» в настройках электронной почты, а затем снова нажать кнопку.

Джордан Льюис
источник
20
не снимать ли галочку с этой опции будет выставлять мой личный адрес электронной почты?
Франк Фрайбургер
14
Да, это то, что он будет делать, но вы уже раскрыли свой адрес электронной почты, если вы отправили коммиты в свой репозиторий. Несмотря на то, что Github не будет показывать ваш адрес электронной почты, если я клонирую ваш репозиторий, я смогу увидеть их точно так же, и именно это предотвратит эта новая функция «предотвращай и работай»
Лассе В. Карлсен
10
Это сомнительное решение. По крайней мере, отметьте, что это откроет ваш адрес электронной почты всему миру.
Ковач
Даниэль А. А. Пельсмейкер и Винфрид - лучшие ответы.
Питер Мортенсен
1

Я решил ошибки путем:

git config --global user.email ""

Это просто установило мой адрес электронной почты пустым (пустая строка). Теперь я настраиваю свою электронную почту в отдельных проектах с помощью:

git config user.email "myemail@domain.com"

Ндирангу Ваверу
источник
0
  1. просто зайдите на github.com и нажмите на свой профиль
  2. перейдите в настройки
  3. Теперь нажмите на «Email» на левой навигационной панели.
  4. и найдите поле «Сохранить мои адреса электронной почты частными»
  5. пожалуйста, снимите этот флажок
  6. сейчас, пожалуйста, проверьте еще раз, и я думаю, что ваша проблема решена сейчас.
Анджани Барнвал
источник
2
это будет работать, но это покажет ваш личный адрес электронной почты. если вы беспокоитесь о конфиденциальности, посмотрите другие решения.
Казновац
-1

Снимите флажок Блокировать командную строку, которые отображают мою электронную почту, а затем попробуйте отправить код из командной строки.

Раджеш Панда
источник
то же самое применимо знаете?
LOG_TAG
это будет работать, но это покажет ваш личный адрес электронной почты. если вы беспокоитесь о конфиденциальности, посмотрите другие решения.
Казновац
Чем это отличается от ответа Джордана Льюиса ?
Питер Мортенсен