Jak usunąć osobisty adres e-mail z zatwierdzeń Git

Jak usunąć osobisty adres e-mail z zatwierdzeń Git
Jak usunąć osobisty adres e-mail z zatwierdzeń Git

Ochrona prywatności poczty e-mail w GitHub

Ujawnienie Twojego osobistego adresu e-mail w GitHub może stanowić zagrożenie dla prywatności, szczególnie podczas pracy z repozytoriami publicznymi. Jeśli otworzyłeś żądanie ściągnięcia (PR), które zostało scalone i zauważyłeś, że Twój osobisty adres e-mail jest widoczny, ważne jest, aby podjąć kroki, aby go ukryć.

W tym przewodniku omówimy różne metody usuwania lub ukrywania adresu e-mail przed opinią publiczną po połączeniu PR. Omówimy także, czy opiekunowie mają możliwość zmiany informacji o zatwierdzeniach i jak skutecznie zmieniać zatwierdzenia.

Komenda Opis
git filter-branch Przepisuje historię zatwierdzeń, aby zmienić informacje o autorze i osobie zatwierdzającej w repozytorium Git.
export GIT_AUTHOR_NAME Ustawia nazwę autora zatwierdzeń przepisywanych w operacji gałęzi filtru.
export GIT_AUTHOR_EMAIL Ustawia adres e-mail autora dla zatwierdzeń przepisywanych w operacji filter-branch.
wget Pobiera pliki z Internetu, używane tutaj do pobrania narzędzia BFG Repo-Cleaner.
bfg-1.13.0.jar Plik Java Archive dla BFG Repo-Cleaner, który upraszcza proces czyszczenia historii repozytorium.
--replace-text Polecenie BFG Repo-Cleaner służące do zamiany określonego tekstu (adresów e-mail) w historii repozytorium.
git reflog expire Wygasa wpisy w reflogu, co jest przydatne do czyszczenia odniesień do przepisanej historii.
git gc --prune=now Natychmiast usuwa elementy bezużyteczne i usuwa nieosiągalne obiekty, używane po przepisaniu historii.
git commit --amend Modyfikuje najnowsze zatwierdzenie, dodając informacje o nowym autorze lub zmieniając treść zatwierdzenia.

Usuwanie osobistego adresu e-mail z zatwierdzeń Git

Skrypty zapewniły pomoc w usuwaniu osobistych informacji e-mail z zatwierdzeń Git po połączeniu żądania ściągnięcia. Pierwszy skrypt używa git filter-branch aby przepisać historię zobowiązań. To polecenie wykonuje iterację po każdym zatwierdzeniu, sprawdzając, czy adres e-mail autora lub osoby zatwierdzającej odpowiada staremu e-mailowi. Jeśli tak, zastępuje go nowym, anonimowym adresem e-mail. Po przepisaniu historii zatwierdzeń wymagane jest wymuszenie push w celu aktualizacji zdalnego repozytorium. The export GIT_AUTHOR_EMAIL I export GIT_COMMITTER_EMAIL polecenia są tutaj kluczowe, aby upewnić się, że przepisane zatwierdzenia zawierają prawidłowe informacje e-mail.

Drugi skrypt wykorzystuje BFG Repo-Cleaner, co jest prostszą i szybszą alternatywą dla gałęzi filtrującej. Korzystając z --replace-text poleceniem, BFG może zastąpić wszystkie wystąpienia starego e-maila nowym w całej historii repozytorium. Po wymianie skrypt wykonuje wyrzucanie elementów bezużytecznych git gc --prune=now aby wyczyścić wszelkie pozostałe dane. Trzeci skrypt skupia się na zmianie ostatniego zatwierdzenia za pomocą git commit --amend, co umożliwia szybką zmianę informacji o autorze bez konieczności przepisywania całej historii.

Użycie gałęzi filtrującej Git do przepisania historii zatwierdzeń

Używanie skryptów powłoki w Git

#!/bin/sh

# Ensure you have a clean working directory
git checkout main

# Rewrite the commit history to change the author email
git filter-branch --env-filter \
'
OLD_EMAIL="my.personal@email.me"
CORRECT_NAME="My Username"
CORRECT_EMAIL="12345678+username@users.noreply.github.com"
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
    export GIT_COMMITTER_NAME="$CORRECT_NAME"
    export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
    export GIT_AUTHOR_NAME="$CORRECT_NAME"
    export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags

# Force push the changes to the repository
git push --force --tags origin 'refs/heads/*'

Korzystanie z BFG Repo-Cleaner w celu łatwiejszego usuwania wiadomości e-mail

Używanie Java z BFG Repo-Cleaner

# Download BFG Repo-Cleaner
wget https://repo1.maven.org/maven2/com/madgag/bfg/1.13.0/bfg-1.13.0.jar

# Run BFG to replace the old email with the new one
java -jar bfg-1.13.0.jar --replace-text 'my.personal@email.me==12345678+username@users.noreply.github.com' .

# Cleanup and perform garbage collection
git reflog expire --expire=now --all && git gc --prune=now --aggressive

# Push the changes to the remote repository
git push --force

Zmiana ostatniego zatwierdzenia w celu zmiany adresu e-mail

Używanie wiersza poleceń Git do prostych poprawek

# Change the email for the last commit
git commit --amend --author="My Username <12345678+username@users.noreply.github.com>"

# Push the amended commit to the repository
git push --force

Zapewnienie prywatności po połączeniu żądania ściągnięcia

Kolejnym aspektem, który należy wziąć pod uwagę podczas próby usunięcia osobistych wiadomości e-mail z zatwierdzeń Git, jest użycie GitHub’s personal email settings. Konfigurując swojego klienta Git tak, aby korzystał z prywatnego adresu e-mail dostarczonego przez GitHub, możesz uniknąć ujawniania prawdziwego adresu e-mail w przyszłych zatwierdzeniach. Można to zrobić, ustawiając format poczty e-mail username@users.noreply.github.com. Dodatkowo włączenie prywatności poczty e-mail w ustawieniach GitHuba gwarantuje, że Twoja prywatna poczta e-mail będzie używana do operacji Git w Internecie.

W przypadku zatwierdzeń, które zostały już wypchnięte i scalone, opiekunowie GitHuba mają ograniczone uprawnienia do zmiany historycznych danych zatwierdzeń. Mogą jednak pomóc, egzekwując zasady repozytorium, które zachęcają lub wymagają od autorów korzystania z prywatnych wiadomości e-mail. W skrajnych przypadkach mogą pomóc w usunięciu wrażliwych danych, ale zwykle wiąże się to z przepisaniem historii, co może mieć wpływ na wszystkich autorów.

Często zadawane pytania dotyczące prywatności poczty e-mail w zatwierdzeniach Git

  1. Jak mogę zapobiec ujawnieniu mojego e-maila w przyszłych zatwierdzeniach?
  2. Ustaw swój adres e-mail na username@users.noreply.github.com w konfiguracji Git.
  3. Czy mogę zmienić adres e-mail dla już wypchniętych zatwierdzeń?
  4. Tak, możesz skorzystać git filter-branch Lub BFG Repo-Cleaner aby przepisać historię zatwierdzeń i zmienić adres e-mail.
  5. Jaki jest najłatwiejszy sposób na ukrycie mojego adresu e-mail w przyszłych zatwierdzeniach?
  6. Skonfiguruj swoje konto GitHub tak, aby korzystało z prywatnego adresu e-mail i ustaw adres e-mail swojego klienta Git na username@users.noreply.github.com.
  7. Czy zmiana zatwierdzenia zmienia jego historię?
  8. Tak, git commit --amend zmienia najnowsze zatwierdzenie, które można wymusić w celu aktualizacji repozytorium.
  9. Czy opiekunowie repozytoriów mogą zmieniać informacje o moich zatwierdzeniach?
  10. Opiekunowie mają ograniczone możliwości zmiany historii zatwierdzeń, ale mogą egzekwować zasady prywatności dla przyszłych zatwierdzeń.
  11. Czy ponowne zapisanie historii zatwierdzeń jest bezpieczne?
  12. Przepisywanie historii może mieć wpływ na współpracę, dlatego należy to robić ostrożnie, najlepiej w kontrolowanym środowisku.
  13. Jaki jest wpływ zmian narzucających siłę?
  14. Naciskanie na siłę może nadpisać historię, co może zdezorientować współpracowników, dlatego przed wykonaniem tej czynności należy wyraźnie się poinformować.
  15. Czy można egzekwować prywatność poczty e-mail w całej organizacji?
  16. Tak, organizacje GitHub mogą ustalać zasady i korzystać z narzędzi takich jak pre-commit hooks aby zapewnić prywatność poczty elektronicznej.
  17. Co to są haki przed zatwierdzeniem?
  18. Haki przed zatwierdzeniem to skrypty uruchamiane przed utworzeniem zatwierdzenia, zapewniające spełnienie określonych kryteriów, np. użycie prywatnego adresu e-mail.

Końcowe przemyślenia na temat prywatności poczty e-mail w Git Commits

Ochrona danych osobowych jest niezbędna, szczególnie w przypadku udostępniania informacji w publicznych repozytoriach. Konfigurując ustawienia Git tak, aby korzystały z adresu prywatnego i korzystając z narzędzi takich jak git filter-branch I BFG Repo-Cleaner, możesz skutecznie usunąć dane osobowe z historii zatwierdzeń. Chociaż opiekunowie repozytoriów mają ograniczone uprawnienia do zmiany informacji o zatwierdzeniach, mogą wspierać praktyki dotyczące prywatności. Zawsze informuj swój zespół o wszelkich zmianach w historii, aby uniknąć nieporozumień. Dzięki tym metodom możesz zachować swoją prywatność, jednocześnie przyczyniając się do projektów open source.