Ошибка "Ваш push опубликует личный адрес электронной почты"

115

Я новичок в GitHub / VCS .

Когда я пытаюсь поделиться своим проектом на GitHub, я получаю следующее сообщение об ошибке.

    Can't finish GitHub sharing process
    Successfully created project 'myproject' on GitHub, but initial push failed:
    remote: error: GH007: Your push would publish a private email address.
    failed to push some refs to 'https://github.com/me/myproject.git'

Я погуглил сообщение об ошибке и не получил ни одного обращения. Я также искал Stack Exchange, но сигары не было. Как я могу решить эту проблему?

user156060
источник

Ответы:

70

Я получил то же error: GH007сообщение и использовал следующее, чтобы решить проблему.

  1. Перейдите в раздел Настройка адреса электронной почты для фиксации .
  2. Следуйте инструкциям по настройке адреса электронной почты для каждого репозитория на вашем компьютере .
  3. Откройте свою учетную запись GitHub и перейдите в НастройкиЭлектронная почта .
  4. Установите флажок Сохранить мой адрес электронной почты в секрете.
  5. Снимите флажок Блокировать кнопки командной строки, открывающие доступ к моей электронной почте .

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

София-Фернандес
источник
24
Это решение, но на самом деле может раскрыть ваш адрес электронной почты. Если у вас есть какие-либо коммиты, которые еще не были отправлены, вам нужно снять флажок Блокировать запросы командной строки, которые раскрывают мою электронную почту. Затем вы можете отправить ожидающие коммиты. После этого обновите свой адрес электронной почты на адрес электронной почты без ответа и установите флажок Блокировать сообщения командной строки, которые снова открывают мою электронную почту, чтобы ваш адрес оставался конфиденциальным.
SvenAelterman
5
@SvenAelterman update your email address to the no-reply email addressгде? В настройках github или где-нибудь на вашем локальном компьютере, который предположительно отправляет / использует ваш личный адрес электронной почты? Мне кажется нелогичным, что я мог бы скопировать и вставить адрес электронной почты, сгенерированный github, непосредственно обратно в github, а не просто установить флажок, поэтому я предполагаю, что чтение неверно. Либо это??
hippietrail
15
Чтобы изменить адрес электронной почты для вашего последнего использования коммитаgit commit --amend --author="Author Name <email@address.com>"
dspacejs
9
Намного лучше использовать здесь решение @Winfried . Не буду раскрывать ваш адрес электронной почты публично
Коннор
8
Согласен, правильный ответ - @ Winfried stackoverflow.com/a/51097104/7872793 .
Шейн
238

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

  1. Откройте Терминал.

  2. Измените текущий рабочий каталог на локальный репозиторий, в котором вы хотите настроить адрес электронной почты, связанный с вашими коммитами Git.

  3. Найдите свой адрес на GitHub в разделе « Персональные настройки GitHub» → «Электронная почта» . Он упоминается в описании флажка Сохранить мой адрес электронной почты в секрете. Обычно он начинается с уникального идентификатора и вашего имени пользователя.

  4. Установите адрес электронной почты в Git. Используйте свой адрес электронной почты для отсутствия ответа, предоставленный GitHub.

    • Установка вашего адреса электронной почты для каждого репозитория на вашем компьютере

      git config --global user.email "{ID}+{username}@users.noreply.github.com"
      
    • Настройка адреса электронной почты для единого репозитория

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

    git commit --amend --reset-author
    

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

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

    git push
    

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

Винфрид
источник
28
Это должен быть принятый ответ. Ответ @ sofia-fernandez может раскрыть адреса электронной почты. Есть ли способ сделать это немного короче и читабельнее? У вас есть два основных раздела, единственное отличие которых - --globalфлаг
Коннор
У меня были проблемы с интерфейсом Linux (использовал терминал SourceTree, и прошло некоторое время с тех пор, как я использовал VI), вы можете добавить, -m <comment>если хотите этого избежать.
MikeL
2

Вероятно, вы включили (или теперь она включена по умолчанию) функцию конфиденциальности электронной почты GitHub.

Подробно на этой странице в справке GitHub .

Короче говоря, есть переключатель, который вы можете включить (который включен в вашей учетной записи), который предотвращает любое нажатие, где пользователь является вашим фактическим адресом электронной почты. Вместо этого вы можете использовать анонимный адрес (или отключить эту функцию).

Подробная информация об обоих вариантах доступна на одной странице .

Бурхан Халид
источник
Спасибо! Я анонимизировал свой адрес электронной почты, и это решило проблему!
user156060 09
Использование анонимного адреса электронной почты - хорошее решение. Если вы создали его до 18 июля 2017 года, вы можете сделать это снова, чтобы добавить к нему 7 случайных цифр.
SvenAelterman
Ответ Винфрида - самодостаточный ответ.
Питер Мортенсен,
0
  1. Перейти к Settings
  2. Щелкните по Emails. Прокрутите вниз. Keep my email addresses privateраздел будет там.
  3. Запишите публичный адрес электронной почты, упомянутый там.
  4. Сбросьте свой локальный глобальный идентификатор электронной почты с общедоступным идентификатором электронной почты, упомянутым на предыдущем шаге, используя следующую команду.
$ git config — global user.email "<user_email_id>"
  1. Отмените последнюю локальную фиксацию, которая была заблокирована.
$ git reset --soft HEAD~1 
  1. Сделайте новую фиксацию и нажмите ее. Это сработает.
Юврай Патил
источник
-2

Я была такая же проблема. Мое решение показано на картинке ниже:

Настройки GitHub

Питер Доэрти
источник
7
Вы решили опубликовать свое электронное письмо, открытое для всех парсеров и тому подобное, но затем вы размываете его там,
Лесто,
Чем это отличается от принятого ответа (опубликованного почти за год до этого)?
Питер Мортенсен,