Kako odstraniti osebno e-pošto iz Git Commits

Kako odstraniti osebno e-pošto iz Git Commits
Kako odstraniti osebno e-pošto iz Git Commits

Zaščita vaše zasebnosti e-pošte na GitHubu

Izpostavljenost vašega osebnega e-poštnega sporočila v GitHub-ovih obvezah je lahko skrb za zasebnost, zlasti pri delu v javnih repozitorijih. Če ste odprli zahtevo za vleko (PR), ki je bila združena, in opazili, da je vaš osebni e-poštni naslov viden, je pomembno, da ukrepate, da ga skrijete.

V tem priročniku bomo raziskali različne metode za odstranitev ali zakrivanje vašega e-poštnega naslova pred javnim ogledom po združitvi PR-ja. Razpravljali bomo tudi o tem, ali imajo vzdrževalci možnost spreminjanja informacij o odobritvah in kako učinkovito spremeniti vaše objave.

Ukaz Opis
git filter-branch Ponovno napiše zgodovino odobritev, da spremeni informacije o avtorju in pošiljatelju v repozitoriju Git.
export GIT_AUTHOR_NAME Nastavi ime avtorja za objave, ki se prepisujejo v operaciji filtrirne veje.
export GIT_AUTHOR_EMAIL Nastavi e-poštni naslov avtorja za objave, ki se prepisujejo v operaciji filtrirne veje.
wget Prenese datoteke iz interneta, ki se tukaj uporabljajo za prenos orodja BFG Repo-Cleaner.
bfg-1.13.0.jar Arhivska datoteka Java za BFG Repo-Cleaner, ki poenostavi postopek čiščenja zgodovine repozitorija.
--replace-text Ukaz BFG Repo-Cleaner za zamenjavo določenega besedila (e-poštnih naslovov) v zgodovini repozitorija.
git reflog expire Potečejo vnosi v reflog, kar je uporabno za čiščenje referenc na prepisano zgodovino.
git gc --prune=now Izvaja zbiranje smeti in takoj odstrani nedosegljive predmete, ki se uporabijo po ponovnem pisanju zgodovine.
git commit --amend Spremeni najnovejšo objavo z novimi informacijami o avtorju ali spremeni vsebino objave.

Odstranjevanje osebne e-pošte iz Git Commits

Skripti so nudili pomoč pri odstranjevanju osebnih e-poštnih podatkov iz Git commits po združitvi zahteve za vlečenje. Prvi scenarij uporablja git filter-branch da ponovno napišete zgodovino potrditev. Ta ukaz ponovi vsako objavo in preveri, ali se e-pošta avtorja ali pošiljatelja ujema s staro e-pošto. Če se, ga nadomesti z novim, anonimiziranim e-poštnim sporočilom. Po ponovnem pisanju zgodovine odobritev je za posodobitev oddaljenega repozitorija potreben prisilni pritisk. The export GIT_AUTHOR_EMAIL in export GIT_COMMITTER_EMAIL ukazi so tukaj ključnega pomena za zagotovitev, da imajo prepisane objave pravilne podatke o e-pošti.

Drugi scenarij izkorišča BFG Repo-Cleaner, ki je enostavnejša in hitrejša alternativa filter-veji. Z uporabo --replace-text lahko BFG zamenja vse primerke starega e-poštnega sporočila z novim v celotni zgodovini skladišča. Po zamenjavi skript izvede zbiranje smeti s git gc --prune=now za čiščenje morebitnih preostalih podatkov. Tretji skript se osredotoča na spreminjanje zadnje objave z uporabo git commit --amend, ki omogoča hitre spremembe podatkov o avtorju brez prepisovanja celotne zgodovine.

Uporaba Git Filter-Branch za ponovno pisanje zgodovine odobritev

Uporaba lupinskega skriptiranja z Gitom

#!/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/*'

Uporaba BFG Repo-Cleaner za lažje odstranjevanje e-pošte

Uporaba Jave 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

Spreminjanje zadnje objave za spremembo e-pošte

Uporaba ukazne vrstice Git za preprosto spreminjanje

# 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

Zagotavljanje zasebnosti po združitvi zahteve za vlečenje

Drug vidik, ki ga morate upoštevati, ko poskušate odstraniti osebno e-pošto iz Git commits, je uporaba GitHub’s personal email settings. Če konfigurirate svojega odjemalca Git za uporabo zasebnega e-poštnega naslova, ki ga zagotovi GitHub, se lahko izognete izpostavljanju svojega pravega e-poštnega sporočila v prihodnjih objavah. To lahko storite tako, da svoj e-poštni naslov nastavite na obliko username@users.noreply.github.com. Poleg tega omogočanje zasebnosti e-pošte v nastavitvah GitHub zagotavlja, da se vaša zasebna e-pošta uporablja za spletne operacije Git.

Za objave, ki so že bile potisnjene in združene, imajo GitHubovi vzdrževalci omejeno moč za spreminjanje zgodovinskih podatkov o objavi. Vendar pa lahko pomagajo z uveljavljanjem pravilnikov o repozitoriju, ki spodbujajo ali zahtevajo od sodelavcev uporabo zasebnih e-poštnih sporočil. V skrajnih primerih lahko pomagajo pri odstranjevanju občutljivih podatkov, vendar to običajno vključuje ponovno pisanje zgodovine, kar lahko vpliva na vse sodelujoče.

Pogosta vprašanja o zasebnosti e-pošte v Git Commits

  1. Kako lahko preprečim, da bi bila moja e-pošta izpostavljena v prihodnjih objavah?
  2. Nastavite svoj e-poštni naslov na username@users.noreply.github.com v vaši konfiguraciji Git.
  3. Ali lahko spremenim e-poštni naslov za že potisnjene potrditve?
  4. Da, lahko uporabite git filter-branch oz BFG Repo-Cleaner da ponovno napišete zgodovino potrditve in spremenite e-pošto.
  5. Kako najlažje skrijem svojo e-pošto v prihodnjih objavah?
  6. Konfigurirajte svoj račun GitHub za uporabo zasebne e-pošte in nastavite e-pošto odjemalca Git na username@users.noreply.github.com.
  7. Ali spreminjanje objave spremeni njeno zgodovino?
  8. ja git commit --amend spremeni najnovejšo objavo, ki jo je mogoče prisilno potisniti za posodobitev repozitorija.
  9. Ali lahko vzdrževalci repozitorija spremenijo moje informacije o objavi?
  10. Vzdrževalci imajo omejeno možnost spreminjanja zgodovine odobritev, lahko pa uveljavijo pravilnike o zasebnosti za prihodnje objave.
  11. Ali je varno prepisati zgodovino odobritev?
  12. Ponovno pisanje zgodovine lahko vpliva na sodelovanje, zato ga je treba izvajati previdno, najbolje v nadzorovanem okolju.
  13. Kakšen je vpliv silovitih sprememb?
  14. Prisilno pritiskanje lahko prepiše zgodovino, kar lahko zmede sodelavce, zato se pred tem jasno sporazumevajte.
  15. Ali je mogoče zasebnost e-pošte uveljaviti v celotni organizaciji?
  16. Da, organizacije GitHub lahko nastavijo politike in uporabljajo orodja, kot so pre-commit hooks da zagotovite zasebnost elektronske pošte.
  17. Kaj so kljuke pred potrditvijo?
  18. Pre-commit hooks so skripti, ki se zaženejo, preden je potrditev ustvarjena, in zagotavljajo, da izpolnjuje določene kriterije, kot je uporaba zasebne e-pošte.

Končne misli o zasebnosti e-pošte v Git Commits

Zaščita vaših osebnih podatkov je bistvenega pomena, zlasti ko prispevate v javna skladišča. S konfiguracijo nastavitev Git za uporabo zasebnega naslova in uporabo orodij, kot je git filter-branch in BFG Repo-Cleaner, lahko učinkovito odstranite osebne podatke iz zgodovine odobritev. Medtem ko imajo vzdrževalci repozitorija omejeno moč za spreminjanje informacij o potrditvi, lahko podpirajo prakse zasebnosti. Svojo ekipo vedno obvestite o kakršnih koli prepisih zgodovine, da preprečite zmedo. S temi metodami lahko ohranite svojo zasebnost, medtem ko prispevate k odprtokodnim projektom.