Jak odstranit osobní e-mail z Git Commits

Jak odstranit osobní e-mail z Git Commits
Jak odstranit osobní e-mail z Git Commits

Ochrana soukromí vašeho e-mailu na GitHubu

Zveřejnění vašeho osobního e-mailu v commitech GitHubu může být problémem ochrany soukromí, zejména při práci na veřejných úložištích. Pokud jste otevřeli žádost o stažení (PR), která byla sloučena, a všimli jste si, že váš osobní e-mail je viditelný, je důležité podniknout kroky k jeho skrytí.

V této příručce prozkoumáme různé metody, jak odstranit nebo skrýt vaši e-mailovou adresu z veřejného pohledu po sloučení PR. Budeme také diskutovat o tom, zda mají správci možnost měnit informace o odevzdání a jak efektivně upravit vaše odevzdání.

Příkaz Popis
git filter-branch Přepíše historii odevzdání za účelem změny informací o autorovi a pověřenci v úložišti Git.
export GIT_AUTHOR_NAME Nastavuje jméno autora pro revize, které se přepisují v operaci filtr-větve.
export GIT_AUTHOR_EMAIL Nastaví e-mail autora pro revize, které se přepisují v operaci větve filtru.
wget Stahuje soubory z internetu, používá se zde ke stažení nástroje BFG Repo-Cleaner.
bfg-1.13.0.jar Soubor Java Archive pro BFG Repo-Cleaner, který zjednodušuje proces čištění historie úložiště.
--replace-text Příkaz BFG Repo-Cleaner k nahrazení určitého textu (e-mailových adres) v historii úložiště.
git reflog expire Platnost položek v reflogu vyprší, což je užitečné pro vyčištění odkazů na přepsanou historii.
git gc --prune=now Okamžitě provádí sběr odpadu a ořezává nedostupné objekty, které se používají po přepsání historie.
git commit --amend Doplní nejnovější odevzdání novými informacemi o autorovi nebo změnami obsahu odevzdání.

Odebrání osobního e-mailu z Git Commits

Skripty poskytly pomoc při odstraňování osobních e-mailových informací z potvrzení Git po sloučení požadavku na stažení. První skript používá git filter-branch přepsat historii odevzdání. Tento příkaz prochází každým odevzdáním a kontroluje, zda e-mail autora nebo komitanta odpovídá starému e-mailu. Pokud ano, nahradí jej novým, anonymizovaným e-mailem. Po přepsání historie odevzdání je k aktualizaci vzdáleného úložiště vyžadováno vynucení push. The export GIT_AUTHOR_EMAIL a export GIT_COMMITTER_EMAIL příkazy jsou zde klíčové, aby se zajistilo, že přepsané commity budou mít správné e-mailové informace.

Druhý skript využívá BFG Repo-Cleaner, což je jednodušší a rychlejší alternativa k filter-branch. Pomocí --replace-text BFG může nahradit všechny instance starého e-mailu novým v celé historii úložiště. Po výměně skript provede sběr odpadu git gc --prune=now k vyčištění případných zbytkových dat. Třetí skript se zaměřuje na úpravu nejnovějšího použití commitu git commit --amend, který umožňuje rychlé změny informací o autorovi bez přepisování celé historie.

Použití Git Filter-Branch k přepsání historie potvrzení

Použití skriptování Shell s 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/*'

Použití BFG Repo-Cleaner pro snazší odstranění e-mailů

Využití Javy s 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

Změna posledního závazku pro změnu e-mailu

Použití příkazového řádku Git pro jednoduchou úpravu

# 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

Zajištění soukromí po sloučení požadavku na stažení

Dalším aspektem, který je třeba zvážit při pokusu o odstranění osobního e-mailu z potvrzení Git, je použití GitHub’s personal email settings. Nakonfigurováním svého klienta Git tak, aby používal soukromou e-mailovou adresu poskytnutou GitHubem, se můžete vyhnout odhalení skutečného e-mailu v budoucích revizích. To lze provést nastavením formátu e-mailu username@users.noreply.github.com. Povolení soukromí e-mailu v nastavení GitHubu navíc zajistí, že váš soukromý e-mail bude používán pro webové operace Git.

U revizí, které již byly posunuty a sloučeny, mají správci GitHubu omezenou pravomoc měnit historická data odevzdání. Mohou však pomoci tím, že budou vynucovat zásady úložiště, které povzbuzují nebo vyžadují přispěvatele k používání soukromých e-mailů. V extrémních případech mohou pomoci s odstraněním citlivých dat, ale to obvykle zahrnuje přepsání historie, což může ovlivnit všechny přispěvatele.

Často kladené otázky o ochraně soukromí e-mailů v Git Commits

  1. Jak mohu zabránit odhalení mého e-mailu v budoucích commitech?
  2. Nastavte svůj e-mail na username@users.noreply.github.com ve vaší konfiguraci Git.
  3. Mohu změnit e-mail pro již zaslané commity?
  4. Ano, můžete použít git filter-branch nebo BFG Repo-Cleaner přepsat historii odevzdání a změnit e-mail.
  5. Jaký je nejjednodušší způsob, jak skrýt můj e-mail v budoucích commitech?
  6. Nakonfigurujte svůj účet GitHub tak, aby používal soukromý e-mail, a nastavte e-mail svého klienta Git na username@users.noreply.github.com.
  7. Změní úprava commitu jeho historii?
  8. Ano, git commit --amend změní nejnovější odevzdání, které lze vynutit za účelem aktualizace úložiště.
  9. Mohou správci úložiště změnit mé informace o odevzdání?
  10. Správci mají omezenou možnost měnit historii odevzdání, ale mohou prosazovat zásady ochrany osobních údajů pro budoucí odevzdání.
  11. Je bezpečné přepisovat historii odevzdání?
  12. Přepisování historie může ovlivnit spolupráci, proto by se mělo provádět opatrně, ideálně v kontrolovaném prostředí.
  13. Jaký je dopad silových změn?
  14. Vynucené zatlačení může přepsat historii, což by mohlo zmást spolupracovníky, proto před tím jasně komunikujte.
  15. Lze soukromí e-mailů vynutit v celé organizaci?
  16. Ano, organizace GitHub mohou nastavovat zásady a používat nástroje jako pre-commit hooks pro zajištění soukromí e-mailů.
  17. Co jsou háčky před závazkem?
  18. Háky před potvrzením jsou skripty, které se spouštějí před vytvořením potvrzení a zajišťují, že splňuje určitá kritéria, jako je použití soukromého e-mailu.

Závěrečné úvahy o ochraně soukromí e-mailu v Git Commits

Ochrana vašich osobních údajů je nezbytná, zejména při přispívání do veřejných úložišť. Nakonfigurováním nastavení Git tak, aby používala soukromou adresu, a pomocí nástrojů jako git filter-branch a BFG Repo-Cleaner, můžete efektivně odstranit osobní údaje z historie odevzdání. Zatímco správci úložiště mají omezenou pravomoc měnit informace o odevzdání, mohou podporovat postupy ochrany osobních údajů. Vždy zajistěte, abyste se svým týmem sdělili jakékoli přepisy historie, aby nedošlo k záměně. Pomocí těchto metod si můžete zachovat své soukromí a zároveň přispívat do projektů s otevřeným zdrojovým kódem.