Błąd „Twoje push spowodowałoby opublikowanie prywatnego adresu e-mail”

113

Jestem bardzo nowy w GitHub / VCS .

Kiedy próbuję udostępnić swój projekt w serwisie GitHub, pojawia się następujący komunikat o błędzie.

    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'

Wyszukałem w Google komunikat o błędzie i nie otrzymałem żadnych wyników. Przeszukałem też Stack Exchange, ale nie mam cygara. Jak mogę rozwiązać ten problem?

user156060
źródło

Odpowiedzi:

69

Otrzymałem ten sam error: GH007komunikat i użyłem poniższego, aby rozwiązać problem.

  1. Przejdź do Ustawianie adresu e-mail do zatwierdzenia .
  2. Postępuj zgodnie z ustawieniem adresu e-mail dla każdego repozytorium na komputerze .
  3. Otwórz swoje konto GitHub i przejdź do UstawieniaE-maile .
  4. Zaznacz pole wyboru Zachowaj mój adres e-mail jako prywatny .
  5. Usuń zaznaczenie pola wyboru Blokuj wypychanie wiersza poleceń, które ujawniają mój adres e-mail .

Może to jednak ujawnić Twój adres e-mail.

sofia-fernandez
źródło
24
To rozwiązanie, ale może faktycznie ujawnić Twój adres e-mail. Jeśli masz jakiekolwiek zatwierdzenia, które nie zostały jeszcze przesłane, musisz odznaczyć opcję Blokuj wypychania wiersza poleceń, które ujawniają mój e-mail. Następnie możesz przesunąć te oczekujące zatwierdzenia. Następnie zaktualizuj swój adres e-mail, tak aby adres e-mail nie odpowiadał, i zaznacz opcję Blokuj wypychania wiersza poleceń, które ponownie ujawniają mój adres e-mail, aby zachować prywatność adresu.
SvenAelterman
5
@SvenAelterman update your email address to the no-reply email addressgdzie? W ustawieniach github lub na twoim lokalnym komputerze gdzieś prawdopodobnie wysyła / używa twojego prywatnego adresu e-mail? Wydaje mi się sprzeczne z intuicją, że powinienem skopiować i wkleić adres e-mail wygenerowany przez github bezpośrednio z powrotem do github, zamiast po prostu kliknąć pole wyboru, dlatego zakładam, że odczyt jest nieprawidłowy. Albo to jest??
hippietrail
15
Aby zmienić adres e-mail do ostatniego użyciagit commit --amend --author="Author Name <[email protected]>"
dspacejs
9
O wiele lepiej jest użyć tutaj rozwiązania @Winfried . Twój adres e-mail nie zostanie ujawniony publicznie
Connor,
8
Zgoda, prawidłowa odpowiedź to stackoverflow.com/a/51097104/7872793 @ Winfried's .
Shane
236

Po włączeniu funkcji „Blokuj wypychania wiersza poleceń, które ujawniają mój e-mail”, będziesz również chciał skonfigurować Git, aby używał Twojego adresu e-mail bez odpowiedzi. Nie martw się - nie wpłynie to na Twój wykres wkładu. Wszystkie zatwierdzenia nadal będą powiązane z Twoim kontem.

  1. Otwórz terminal.

  2. Zmień bieżący katalog roboczy na repozytorium lokalne, w którym chcesz skonfigurować adres e-mail powiązany z zatwierdzeniami Git.

  3. Znajdź swój adres GitHub noreply w Ustawieniach osobistych GitHub → E-maile . Jest to wymienione w opisie pola wyboru Zachowaj mój adres e-mail jako prywatny . Zwykle zaczyna się od unikalnego identyfikatora i Twojej nazwy użytkownika.

  4. Ustaw adres e-mail w Git. Użyj swojego adresu e-mail, podanego przez GitHub, bez odpowiedzi.

    • Ustawienie adresu e-mail dla każdego repozytorium na Twoim komputerze

      git config --global user.email "{ID}+{username}@users.noreply.github.com"
      
    • Ustawianie adresu e-mail dla pojedynczego repozytorium

      git config user.email "{ID}+{username}@users.noreply.github.com"
      
  5. Zresetuj informacje o autorze przy ostatnim zatwierdzeniu:

    git commit --amend --reset-author
    

    Jeśli masz wiele zatwierdzeń ze swoim prywatnym adresem e-mail, zobacz tę odpowiedź .

  6. Teraz możesz wypchnąć zatwierdzenie z adresem e-mail noreply, a przyszłe zatwierdzenia będą miały również adres e-mail noreply.

    git push
    

Po skonfigurowaniu Gita, zatwierdzenia będą używać Twojego alternatywnego adresu e-mail „noreply”, a wszelkie wypychania, które nie zostaną odrzucone, zostaną odrzucone.

Winfried
źródło
28
To powinna być akceptowana odpowiedź. @ sofia-fernandez odpowiedź może ujawnić adresy e-mail. Czy jest jakiś sposób, żeby to trochę skrócić i było bardziej czytelne? Masz dwie główne sekcje, w których jedyną różnicą jest --globalflaga
Connor,
Miałem problemy z interfejsem Linuksa (użyłem terminala SourceTree i minęło trochę czasu, odkąd użyłem VI), możesz dodać, -m <comment>jeśli chcesz tego uniknąć.
MikeL
2

Prawdopodobnie włączyłeś (lub jest teraz włączona domyślnie) funkcję prywatności poczty e-mail w GitHub.

Szczegółowy opis znajduje się na tej stronie w pomocy GitHub .

Krótko mówiąc, istnieje przełącznik, który możesz włączyć (który jest włączony na Twoim koncie), który zapobiega wszelkim push, gdy użytkownik jest Twoim rzeczywistym adresem e-mail. Zamiast tego możesz użyć anonimowego adresu (lub wyłączyć tę funkcję).

Szczegóły dotyczące obu opcji są dostępne na tej samej stronie .

Burhan Khalid
źródło
Dzięki! Zanonimizowałem adres e-mail i to rozwiązało problem!
user156060
Korzystanie z anonimowego adresu e-mail jest dobrym rozwiązaniem. Jeśli utworzyłeś go przed 18 lipca 2017 r., Możesz zrobić to ponownie, aby dodać do niego 7 losowych cyfr.
SvenAelterman
Odpowiedź Winfrieda jest samodzielną odpowiedzią.
Peter Mortensen
0
  1. Iść do Settings
  2. Kliknij Emails. Przewiń na dół. Keep my email addresses privatesekcja będzie tam.
  3. Zanotuj wspomniany tam publiczny identyfikator e-mail.
  4. Zresetuj swój lokalny globalny identyfikator e-mail za pomocą publicznego identyfikatora e-mail wspomnianego w poprzednim kroku, używając następującego polecenia.
$ git config — global user.email "<user_email_id>"
  1. Przywróć ostatnie lokalne zatwierdzenie, które zostało zablokowane.
$ git reset --soft HEAD~1 
  1. Zrób nowe zobowiązanie i popchnij. To będzie działać.
Yuvraj Patil
źródło
-2

Miałem ten sam problem. Moje rozwiązanie jest na poniższym obrazku:

Ustawienia GitHub

Peter Doherty
źródło
7
Postanowiłeś
Czym różni się to od zaakceptowanej odpowiedzi (opublikowanej prawie rok wcześniej)?
Peter Mortensen