Cum să eliminați e-mailul personal din Git Commits

Cum să eliminați e-mailul personal din Git Commits
Cum să eliminați e-mailul personal din Git Commits

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

  1. Cum pot împiedica e-mailul meu să fie expus în viitoarele comisii?
  2. Setează-ți e-mailul la username@users.noreply.github.com în configurația dvs. Git.
  3. Pot schimba e-mailul pentru comiterile deja împinge?
  4. Da, poți folosi git filter-branch sau BFG Repo-Cleaner pentru a rescrie istoricul de comitere și a schimba e-mailul.
  5. Care este cel mai simplu mod de a-mi ascunde e-mailul în viitoarele comisioane?
  6. 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.
  7. Modificarea unui commit îi schimbă istoria?
  8. Da, git commit --amend modifică cea mai recentă comitere, care poate fi forțată pentru a actualiza depozitul.
  9. Pot întreținetorii depozitului să-mi schimbe informațiile de comitere?
  10. Operatorii de întreținere au capacitatea limitată de a modifica istoricul comitărilor, dar pot aplica politicile de confidențialitate pentru comiterile viitoare.
  11. Este sigur să rescrii istoricul de comitere?
  12. Rescrierea istoriei poate afecta colaborarea, așa că ar trebui făcută cu atenție, ideal într-un mediu controlat.
  13. Care este impactul schimbărilor de forță?
  14. Forțarea poate suprascrie istoricul, ceea ce ar putea deruta colaboratorii, așa că comunicați clar înainte de a face acest lucru.
  15. Poate fi aplicată confidențialitatea e-mailului în întreaga organizație?
  16. Da, organizațiile GitHub pot seta politici și pot folosi instrumente precum pre-commit hooks pentru a asigura confidențialitatea e-mailului.
  17. Ce sunt cârligele pre-commit?
  18. 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.