Ako odstrániť osobný e-mail z Git Commits

Ako odstrániť osobný e-mail z Git Commits
Ako odstrániť osobný e-mail z Git Commits

Ochrana súkromia vášho e-mailu na GitHub

Zverejnenie vášho osobného e-mailu v záväzkoch GitHub môže byť problémom ochrany osobných údajov, najmä pri práci na verejných úložiskách. Ak ste otvorili žiadosť o stiahnutie (PR), ktorá bola zlúčená, a všimli ste si, že váš osobný e-mail je viditeľný, je dôležité podniknúť kroky na jeho skrytie.

V tejto príručke preskúmame rôzne metódy na odstránenie alebo zakrytie vašej e-mailovej adresy pred verejnosťou po zlúčení PR. Budeme tiež diskutovať o tom, či správcovia majú možnosť zmeniť informácie o odovzdaní a ako efektívne upraviť vaše odovzdania.

Príkaz Popis
git filter-branch Prepíše históriu odovzdania, aby sa zmenili informácie o autorovi a odosielateľovi v úložisku Git.
export GIT_AUTHOR_NAME Nastavuje meno autora pre potvrdenia, ktoré sa prepisujú v operácii filter-branch.
export GIT_AUTHOR_EMAIL Nastavuje e-mail autora pre potvrdenia, ktoré sa prepisujú v operácii vetvy filtra.
wget Sťahuje súbory z internetu, ktoré sa tu používajú na stiahnutie nástroja BFG Repo-Cleaner.
bfg-1.13.0.jar Súbor Java Archive pre BFG Repo-Cleaner, ktorý zjednodušuje proces čistenia histórie úložiska.
--replace-text Príkaz BFG Repo-Cleaner na nahradenie špecifického textu (e-mailových adries) v histórii úložiska.
git reflog expire Platnosť položiek v reflogu vyprší, čo je užitočné na vyčistenie odkazov na prepísanú históriu.
git gc --prune=now Okamžite vykonáva zber odpadu a orezáva nedostupné objekty, ktoré sa používajú po prepísaní histórie.
git commit --amend Opravuje najnovšie odovzdanie novými informáciami o autorovi alebo zmenami obsahu odovzdania.

Odstránenie osobného e-mailu z Git Commits

Skripty poskytli pomoc pri odstraňovaní osobných e-mailových informácií z potvrdení Git po zlúčení žiadosti o stiahnutie. Prvý skript používa git filter-branch prepísať históriu odovzdania. Tento príkaz prechádza každým potvrdením a kontroluje, či sa e-mail autora alebo e-mailu zhoduje so starým e-mailom. Ak áno, nahradí ho novým, anonymizovaným e-mailom. Po prepísaní histórie odovzdania sa vyžaduje vynútené zatlačenie na aktualizáciu vzdialeného úložiska. The export GIT_AUTHOR_EMAIL a export GIT_COMMITTER_EMAIL príkazy sú tu kľúčové, aby sa zabezpečilo, že prepísané commity budú mať správne e-mailové informácie.

Druhý skript využíva BFG Repo-Cleaner, čo je jednoduchšia a rýchlejšia alternatíva k filtru-vetve. Pomocou --replace-text BFG môže nahradiť všetky inštancie starého e-mailu novým v celej histórii úložiska. Po výmene skript vykoná zber odpadu git gc --prune=now na vyčistenie zvyškových údajov. Tretí skript sa zameriava na úpravu posledného použitia odovzdania git commit --amend, ktorý umožňuje rýchle zmeny informácií o autorovi bez prepisovania celej histórie.

Použitie Git Filter-Branch na prepísanie histórie potvrdenia

Používanie skriptovania 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žitie BFG Repo-Cleaner na jednoduchšie odstránenie e-mailov

Používanie Java 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

Úprava posledného záväzku na zmenu e-mailu

Použitie príkazového riadku Git na jednoduchú ú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

Zabezpečenie súkromia po zlúčení žiadosti o stiahnutie

Ďalším aspektom, ktorý treba zvážiť pri pokuse o odstránenie osobného e-mailu z potvrdení Git, je použitie GitHub’s personal email settings. Konfiguráciou svojho klienta Git na používanie súkromnej e-mailovej adresy poskytnutej GitHubom sa môžete vyhnúť odhaleniu svojho skutočného e-mailu v budúcich potvrdeniach. Môžete to urobiť nastavením formátu e-mailu username@users.noreply.github.com. Povolenie súkromia e-mailov v nastaveniach GitHubu navyše zaistí, že sa váš súkromný e-mail použije na webové operácie Git.

V prípade potvrdení, ktoré už boli odoslané a zlúčené, majú správcovia GitHubu obmedzenú právomoc meniť historické údaje o potvrdeniach. Môžu však pomôcť tým, že presadia pravidlá úložiska, ktoré povzbudzujú alebo vyžadujú prispievateľov, aby používali súkromné ​​​​e-maily. V extrémnych prípadoch môžu pomôcť pri odstraňovaní citlivých údajov, ale to zvyčajne zahŕňa prepisovanie histórie, čo môže ovplyvniť všetkých prispievateľov.

Často kladené otázky o súkromí e-mailov v Git Commits

  1. Ako môžem zabrániť odhaleniu môjho e-mailu v budúcich potvrdeniach?
  2. Nastavte si email na username@users.noreply.github.com vo vašej konfigurácii Git.
  3. Môžem zmeniť e-mail pre už odoslané potvrdenia?
  4. Áno, môžete použiť git filter-branch alebo BFG Repo-Cleaner prepísať históriu odovzdania a zmeniť e-mail.
  5. Aký je najjednoduchší spôsob, ako skryť môj e-mail v budúcich potvrdeniach?
  6. Nakonfigurujte svoj účet GitHub na používanie súkromného e-mailu a nastavte e-mail svojho klienta Git na username@users.noreply.github.com.
  7. Zmení úprava potvrdenia jeho históriu?
  8. Áno, git commit --amend zmení najnovšie potvrdenie, ktoré je možné vynútiť, aby sa aktualizoval archív.
  9. Môžu správcovia úložiska zmeniť moje informácie o odovzdaní?
  10. Správcovia majú obmedzenú schopnosť meniť históriu odovzdania, ale môžu presadzovať zásady ochrany osobných údajov pre budúce odovzdania.
  11. Je bezpečné prepísať históriu odovzdania?
  12. Prepisovanie histórie môže ovplyvniť spoluprácu, preto by sa malo robiť opatrne, ideálne v kontrolovanom prostredí.
  13. Aký je vplyv silových zmien?
  14. Vynútené zatlačenie môže prepísať históriu, čo môže zmiasť spolupracovníkov, preto pred tým jasne komunikujte.
  15. Je možné presadzovať súkromie e-mailov v rámci celej organizácie?
  16. Áno, organizácie GitHub môžu nastavovať politiky a používať nástroje ako napr pre-commit hooks na zabezpečenie súkromia e-mailov.
  17. Aké sú háčiky pred záväzkom?
  18. Háky pred potvrdením sú skripty, ktoré sa spúšťajú pred vytvorením potvrdenia, čím zabezpečujú, že spĺňa určité kritériá, ako je použitie súkromného e-mailu.

Záverečné myšlienky o súkromí e-mailov v Git Commits

Ochrana vašich osobných údajov je nevyhnutná, najmä pri prispievaní do verejných úložísk. Konfiguráciou nastavení Git na používanie súkromnej adresy a pomocou nástrojov ako git filter-branch a BFG Repo-Cleaner, môžete efektívne odstrániť osobné údaje z histórie spáchania. Aj keď správcovia úložiska majú obmedzenú právomoc meniť informácie o odovzdaní, môžu podporovať postupy ochrany osobných údajov. Vždy sa uistite, že všetky prepisy histórie oznámite svojmu tímu, aby ste sa vyhli nejasnostiam. Pomocou týchto metód si môžete zachovať svoje súkromie a zároveň prispievať do projektov s otvoreným zdrojovým kódom.