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
- Jak mohu zabránit odhalení mého e-mailu v budoucích commitech?
- Nastavte svůj e-mail na username@users.noreply.github.com ve vaší konfiguraci Git.
- Mohu změnit e-mail pro již zaslané commity?
- Ano, můžete použít git filter-branch nebo BFG Repo-Cleaner přepsat historii odevzdání a změnit e-mail.
- Jaký je nejjednodušší způsob, jak skrýt můj e-mail v budoucích commitech?
- 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.
- Změní úprava commitu jeho historii?
- Ano, git commit --amend změní nejnovější odevzdání, které lze vynutit za účelem aktualizace úložiště.
- Mohou správci úložiště změnit mé informace o odevzdání?
- Správci mají omezenou možnost měnit historii odevzdání, ale mohou prosazovat zásady ochrany osobních údajů pro budoucí odevzdání.
- Je bezpečné přepisovat historii odevzdání?
- 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í.
- Jaký je dopad silových změn?
- Vynucené zatlačení může přepsat historii, což by mohlo zmást spolupracovníky, proto před tím jasně komunikujte.
- Lze soukromí e-mailů vynutit v celé organizaci?
- Ano, organizace GitHub mohou nastavovat zásady a používat nástroje jako pre-commit hooks pro zajištění soukromí e-mailů.
- Co jsou háčky před závazkem?
- 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.