Protejarea confidențialității e-mailului pe GitHub
A avea e-mailul personal expus în comiterile GitHub poate fi o problemă de confidențialitate, mai ales atunci când lucrați la depozite publice. Dacă ați deschis o cerere de extragere (PR) care a fost îmbinată și ați observat că e-mailul dvs. personal este vizibil, este important să luați măsuri pentru a o ascunde.
În acest ghid, vom explora diferite metode de a elimina sau de a ascunde adresa dvs. de e-mail de la vederea publicului după ce un PR a fost fuzionat. Vom discuta, de asemenea, dacă întreținerii au capacitatea de a schimba informațiile de comitere și cum să-ți modifice în mod eficient comitările.
Comanda | Descriere |
---|---|
git filter-branch | Rescrie istoricul de comitere pentru a modifica informațiile despre autor și comisionare din depozitul Git. |
export GIT_AUTHOR_NAME | Setează numele autorului pentru commit-urile care sunt rescrise în operația de filtru-ramură. |
export GIT_AUTHOR_EMAIL | Setează e-mailul autorului pentru commit-urile care sunt rescrise în operațiunea de filtru-ramură. |
wget | Descarcă fișiere de pe internet, folosite aici pentru a descărca instrumentul BFG Repo-Cleaner. |
bfg-1.13.0.jar | Fișierul Java Archive pentru BFG Repo-Cleaner, care simplifică procesul de curățare a istoricului depozitului. |
--replace-text | Comanda BFG Repo-Cleaner pentru a înlocui textul specific (adresele de e-mail) din istoricul depozitului. |
git reflog expire | Expiră intrările din reflog, ceea ce este util pentru curățarea referințelor la istoricul rescris. |
git gc --prune=now | Efectuează colectarea gunoiului și tăia imediat obiectele inaccesibile, folosite după rescrierea istoricului. |
git commit --amend | Modifică cea mai recentă comitere cu informații despre autor nou sau modificări ale conținutului de comitere. |
Eliminarea e-mailului personal din Git Commits
Scripturile au oferit ajutor pentru eliminarea informațiilor personale de e-mail din comiterile Git după ce o solicitare de extragere a fost îmbinată. Primul script folosește git filter-branch pentru a rescrie istoricul comiterii. Această comandă repetă prin fiecare commit, verificând dacă e-mailul autorului sau al e-mailului se potrivește cu vechiul e-mail. Dacă o face, îl înlocuiește cu noul e-mail anonim. După rescrierea istoricului de comitere, este necesară o forță pentru a actualiza depozitul de la distanță. The export GIT_AUTHOR_EMAIL și export GIT_COMMITTER_EMAIL comenzile sunt cruciale aici pentru a se asigura că comiterile rescrise au informațiile corecte de e-mail.
Al doilea script folosește BFG Repo-Cleaner, care este o alternativă mai simplă și mai rapidă la filter-branch. Prin folosirea --replace-text comandă, BFG poate înlocui toate instanțele vechiului e-mail cu cel nou pe parcursul istoricului depozitului. După înlocuire, scriptul efectuează o colectare a gunoiului cu git gc --prune=now pentru a curăța orice date reziduale. Al treilea script se concentrează pe modificarea celei mai recente utilizări de comitere git commit --amend, care permite modificări rapide ale informațiilor despre autor fără a rescrie întregul istoric.
Utilizarea Git Filter-Branch pentru a rescrie istoricul de comitere
Utilizarea Shell Scripting cu 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/*'
Folosind BFG Repo-Cleaner pentru o eliminare mai ușoară a e-mailurilor
Utilizarea Java cu 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
Modificarea ultimului commit pentru modificarea e-mailului
Utilizarea liniei de comandă Git pentru modificarea simplă
# 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
Asigurarea confidențialității după fuzionarea unei cereri de tragere
Un alt aspect de luat în considerare atunci când încercați să eliminați e-mailul personal din comitările Git este utilizarea GitHub’s personal email settings. Configurați clientul dvs. Git pentru a utiliza o adresă de e-mail privată furnizată de GitHub, puteți evita expunerea e-mailului dvs. real în comiterile viitoare. Acest lucru se poate face setând e-mailul la format username@users.noreply.github.com. În plus, activarea confidențialității e-mailului în setările GitHub asigură că e-mailul dvs. privat este utilizat pentru operațiunile Git bazate pe web.
Pentru comiterile care au fost deja împinse și îmbinate, întreținerii GitHub au putere limitată de a modifica datele istorice de comitere. Cu toate acestea, ele pot ajuta prin aplicarea politicilor de depozit care încurajează sau solicită colaboratorilor să folosească e-mailurile private. În cazuri extreme, acestea ar putea ajuta la eliminarea datelor sensibile, dar acest lucru implică de obicei rescrierea istoricului, care poate afecta toți contribuitorii.
Întrebări frecvente despre confidențialitatea e-mailului în Git Commits
- Cum pot împiedica e-mailul meu să fie expus în viitoarele comisii?
- Setează-ți e-mailul la username@users.noreply.github.com în configurația dvs. Git.
- Pot schimba e-mailul pentru comiterile deja împinge?
- Da, poți folosi git filter-branch sau BFG Repo-Cleaner pentru a rescrie istoricul de comitere și a schimba e-mailul.
- Care este cel mai simplu mod de a-mi ascunde e-mailul în viitoarele comisioane?
- Configurați-vă contul GitHub pentru a utiliza un e-mail privat și setați e-mailul clientului Git la username@users.noreply.github.com.
- Modificarea unui commit îi schimbă istoria?
- Da, git commit --amend modifică cea mai recentă comitere, care poate fi forțată pentru a actualiza depozitul.
- Pot întreținetorii depozitului să-mi schimbe informațiile de comitere?
- Operatorii de întreținere au capacitatea limitată de a modifica istoricul comitărilor, dar pot aplica politicile de confidențialitate pentru comiterile viitoare.
- Este sigur să rescrii istoricul de comitere?
- Rescrierea istoriei poate afecta colaborarea, așa că ar trebui făcută cu atenție, ideal într-un mediu controlat.
- Care este impactul schimbărilor de forță?
- Forțarea poate suprascrie istoricul, ceea ce ar putea deruta colaboratorii, așa că comunicați clar înainte de a face acest lucru.
- Poate fi aplicată confidențialitatea e-mailului în întreaga organizație?
- Da, organizațiile GitHub pot seta politici și pot folosi instrumente precum pre-commit hooks pentru a asigura confidențialitatea e-mailului.
- Ce sunt cârligele pre-commit?
- Cârligele de pre-commit sunt scripturi care rulează înainte de crearea unui commit, asigurându-se că îndeplinește anumite criterii, cum ar fi utilizarea unui e-mail privat.
Considerări finale despre confidențialitatea e-mailului în Git Commits
Protejarea informațiilor personale este esențială, mai ales atunci când contribuiți la depozitele publice. Configurați setările Git pentru a utiliza o adresă privată și utilizând instrumente precum git filter-branch și BFG Repo-Cleaner, puteți elimina în mod eficient datele personale din istoricul comitărilor. Deși întreținerii depozitului au putere limitată de a modifica informațiile de comitere, aceștia pot sprijini practicile de confidențialitate. Asigurați-vă întotdeauna că comunicați orice rescrie a istoricului cu echipa dvs. pentru a evita confuzia. Cu aceste metode, vă puteți menține confidențialitatea în timp ce contribuiți la proiecte open-source.