Com eliminar el correu electrònic personal de Git Commits

Com eliminar el correu electrònic personal de Git Commits
Com eliminar el correu electrònic personal de Git Commits

Protecció de la privadesa del vostre correu electrònic a GitHub

Tenir el vostre correu electrònic personal exposat a les confirmacions de GitHub pot ser un problema de privadesa, especialment quan es treballa en repositoris públics. Si heu obert una sol·licitud d'extracció (PR) que s'ha combinat i heu observat que el vostre correu electrònic personal és visible, és important que preneu els passos per amagar-lo.

En aquesta guia, explorarem diversos mètodes per eliminar o ocultar la vostra adreça de correu electrònic de la vista pública després de fusionar un PR. També parlarem de si els mantenedors tenen la capacitat de canviar la informació de commit i com modificar-los de manera eficaç.

Comandament Descripció
git filter-branch Reescriu l'historial de commissions per canviar la informació de l'autor i del committer al repositori Git.
export GIT_AUTHOR_NAME Estableix el nom de l'autor per a les confirmacions que es reescriuen a l'operació de ramificació de filtre.
export GIT_AUTHOR_EMAIL Estableix el correu electrònic de l'autor per a les confirmacions que es reescriuen a l'operació de filter-branch.
wget Baixa fitxers d'Internet, utilitzats aquí per descarregar l'eina BFG Repo-Cleaner.
bfg-1.13.0.jar Fitxer d'arxiu Java per a BFG Repo-Cleaner, que simplifica el procés de neteja de l'historial del dipòsit.
--replace-text Ordre BFG Repo-Cleaner per substituir text específic (adreces de correu electrònic) a l'historial del dipòsit.
git reflog expire Caduca les entrades del reflog, que és útil per netejar les referències a l'historial reescrit.
git gc --prune=now Realitza la recollida d'escombraries i elimina immediatament els objectes inabastables, utilitzats després de reescriure l'historial.
git commit --amend Esmena la confirmació més recent amb informació de l'autor nou o canvis al contingut de la confirmació.

Eliminació del correu electrònic personal de Git Commits

Els scripts van proporcionar ajuda per eliminar la informació de correu electrònic personal de les confirmacions de Git després de fusionar una sol·licitud d'extracció. El primer script utilitza git filter-branch per reescriure l'historial de commits. Aquesta ordre itera cada commit, comprovant si el correu electrònic de l'autor o del committer coincideix amb el correu electrònic antic. Si ho fa, el substituirà pel nou correu electrònic anònim. Després de reescriure l'historial de commits, cal una força per actualitzar el dipòsit remot. El export GIT_AUTHOR_EMAIL i export GIT_COMMITTER_EMAIL Les ordres són crucials aquí per garantir que les confirmacions reescrites tinguin la informació de correu electrònic correcta.

El segon guió aprofita BFG Repo-Cleaner, que és una alternativa més senzilla i ràpida a filter-branch. Mitjançant l'ús de --replace-text comanda, BFG pot substituir totes les instàncies del correu electrònic antic amb el nou al llarg de l'historial del dipòsit. Després de la substitució, l'script realitza una recollida d'escombraries amb git gc --prune=now per netejar qualsevol dada residual. La tercera seqüència d'ordres se centra a modificar l'ús de commit més recent git commit --amend, que permet canvis ràpids a la informació de l'autor sense reescriure l'historial complet.

Ús de Git Filter-Branch per reescriure l'historial de commits

Ús de Shell Scripting amb 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/*'

Utilitzant BFG Repo-Cleaner per a una eliminació de correu electrònic més fàcil

Utilitzant Java amb 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

Modificació de l'últim compromís per al canvi de correu electrònic

Utilitzant la línia d'ordres Git per a una simple modificació

# 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

Garantir la privadesa després de combinar una sol·licitud d'extracció

Un altre aspecte a tenir en compte quan s'intenta eliminar el correu electrònic personal dels commits de Git és l'ús GitHub’s personal email settings. Si configureu el vostre client de Git per utilitzar una adreça de correu electrònic privada proporcionada per GitHub, podeu evitar exposar el vostre correu electrònic real en futures confirmacions. Això es pot fer configurant el vostre correu electrònic al format username@users.noreply.github.com. A més, habilitar la privadesa del correu electrònic a la configuració de GitHub garanteix que el vostre correu electrònic privat s'utilitzi per a operacions de Git basades en web.

Per a les confirmacions que ja s'han impulsat i fusionat, els mantenedors de GitHub tenen un poder limitat per canviar les dades històriques de les confirmacions. Tanmateix, poden ajudar-los fent complir polítiques de dipòsit que fomenten o obliguen els col·laboradors a utilitzar correus electrònics privats. En casos extrems, poden ajudar a eliminar dades sensibles, però normalment això implica reescriure l'historial, que pot afectar tots els col·laboradors.

Preguntes freqüents sobre la privadesa del correu electrònic a Git Commits

  1. Com puc evitar que el meu correu electrònic s'exposi en futures confirmacions?
  2. Estableix el teu correu electrònic a username@users.noreply.github.com a la configuració de Git.
  3. Puc canviar el correu electrònic per a les confirmacions ja enviades?
  4. Sí, pots utilitzar git filter-branch o BFG Repo-Cleaner per reescriure l'historial de commissions i canviar el correu electrònic.
  5. Quina és la manera més senzilla d'amagar el meu correu electrònic en futures confirmacions?
  6. Configureu el vostre compte de GitHub per utilitzar un correu electrònic privat i configureu el correu electrònic del vostre client de Git a username@users.noreply.github.com.
  7. Modificar un compromís canvia la seva història?
  8. Sí, git commit --amend canvia la confirmació més recent, que es pot forçar per actualitzar el dipòsit.
  9. Els responsables del dipòsit poden canviar la meva informació de commit?
  10. Els mantenedors tenen una capacitat limitada per canviar l'historial de commits, però poden fer complir les polítiques de privadesa per a futures commits.
  11. És segur reescriure l'historial de commissions?
  12. Reescriure l'historial pot afectar la col·laboració, per la qual cosa s'ha de fer amb cura, idealment en un entorn controlat.
  13. Quin és l'impacte dels canvis de força?
  14. La força de força pot sobreescriure l'historial, cosa que pot confondre els col·laboradors, així que comuniqueu-vos clarament abans de fer-ho.
  15. Es pot aplicar la privadesa del correu electrònic a tota una organització?
  16. Sí, les organitzacions de GitHub poden establir polítiques i utilitzar eines com ara pre-commit hooks per garantir la privadesa del correu electrònic.
  17. Què són els ganxos precommit?
  18. Els ganxos de precommit són scripts que s'executen abans que es creï un commit, garantint que compleixi determinats criteris, com ara utilitzar un correu electrònic privat.

Consideracions finals sobre la privadesa del correu electrònic a Git Commits

Protegir la vostra informació personal és essencial, especialment quan contribuïu als repositoris públics. Configurant la configuració de Git per utilitzar una adreça privada i utilitzant eines com ara git filter-branch i BFG Repo-Cleaner, podeu eliminar de manera efectiva les dades personals de l'historial de commissions. Tot i que els responsables del dipòsit tenen un poder limitat per alterar la informació de confirmació, poden donar suport a les pràctiques de privadesa. Assegureu-vos sempre de comunicar qualsevol reescriptura de l'historial amb el vostre equip per evitar confusions. Amb aquests mètodes, podeu mantenir la vostra privadesa mentre contribuïu a projectes de codi obert.