Comment supprimer l'e-mail personnel des commits Git

Comment supprimer l'e-mail personnel des commits Git
Comment supprimer l'e-mail personnel des commits Git

Protéger la confidentialité de vos e-mails sur GitHub

Avoir votre adresse e-mail personnelle exposée dans les commits GitHub peut constituer un problème de confidentialité, en particulier lorsque vous travaillez sur des référentiels publics. Si vous avez ouvert une pull request (PR) qui a été fusionnée et que vous avez remarqué que votre adresse e-mail personnelle est visible, il est important de prendre des mesures pour la masquer.

Dans ce guide, nous explorerons différentes méthodes pour supprimer ou masquer votre adresse e-mail de la vue du public après la fusion d'un PR. Nous verrons également si les responsables ont la possibilité de modifier les informations de validation et comment modifier efficacement vos validations.

Commande Description
git filter-branch Réécrit l'historique des validations pour modifier les informations sur l'auteur et le committer dans le référentiel Git.
export GIT_AUTHOR_NAME Définit le nom de l'auteur des validations en cours de réécriture dans l'opération de branche de filtre.
export GIT_AUTHOR_EMAIL Définit l'adresse e-mail de l'auteur pour les validations en cours de réécriture dans l'opération de branche de filtre.
wget Télécharge des fichiers depuis Internet, utilisés ici pour télécharger l'outil BFG Repo-Cleaner.
bfg-1.13.0.jar Fichier d'archive Java pour BFG Repo-Cleaner, qui simplifie le processus de nettoyage de l'historique du référentiel.
--replace-text Commande BFG Repo-Cleaner pour remplacer du texte spécifique (adresses e-mail) dans l'historique du référentiel.
git reflog expire Fait expirer les entrées dans le reflog, ce qui est utile pour nettoyer les références à l'historique réécrit.
git gc --prune=now Effectue un garbage collection et élague immédiatement les objets inaccessibles, utilisés après la réécriture de l'historique.
git commit --amend Modifie la validation la plus récente avec de nouvelles informations sur l'auteur ou des modifications apportées au contenu de la validation.

Supprimer l'e-mail personnel des commits Git

Les scripts ont aidé à supprimer les informations de messagerie personnelles des commits Git après la fusion d'une pull request. Le premier script utilise git filter-branch pour réécrire l'historique des commits. Cette commande parcourt chaque validation, vérifiant si l'e-mail de l'auteur ou du committer correspond à l'ancien e-mail. Si tel est le cas, il le remplace par le nouvel e-mail anonymisé. Après avoir réécrit l'historique des validations, une poussée forcée est nécessaire pour mettre à jour le référentiel distant. Le export GIT_AUTHOR_EMAIL et export GIT_COMMITTER_EMAIL les commandes sont ici cruciales pour garantir que les commits réécrits contiennent les informations de courrier électronique correctes.

Le deuxième script exploite BFG Repo-Cleaner, qui est une alternative plus simple et plus rapide au filter-branch. En utilisant le --replace-text commande, BFG peut remplacer toutes les instances de l'ancien e-mail par le nouveau tout au long de l'historique du référentiel. Après le remplacement, le script effectue un garbage collection avec git gc --prune=now pour nettoyer toutes les données résiduelles. Le troisième script se concentre sur la modification du commit le plus récent en utilisant git commit --amend, qui permet de modifier rapidement les informations sur l'auteur sans réécrire tout l'historique.

Utiliser Git Filter-Branch pour réécrire l'historique des validations

Utiliser les scripts Shell avec 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/*'

Utilisation de BFG Repo-Cleaner pour une suppression plus facile des e-mails

Utiliser Java avec 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

Modification du dernier commit pour la modification de l'e-mail

Utiliser la ligne de commande Git pour une modification simple

# 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 confidentialité après la fusion d'une demande de tirage

Un autre aspect à considérer lorsque vous essayez de supprimer les e-mails personnels des commits Git est l'utilisation de GitHub’s personal email settings. En configurant votre client Git pour utiliser une adresse e-mail privée fournie par GitHub, vous pouvez éviter d'exposer votre véritable adresse e-mail lors de futurs commits. Cela peut être fait en définissant votre e-mail au format username@users.noreply.github.com. De plus, l'activation de la confidentialité des e-mails dans les paramètres de GitHub garantit que votre e-mail privé est utilisé pour les opérations Git basées sur le Web.

Pour les commits qui ont déjà été poussés et fusionnés, les responsables de GitHub ont un pouvoir limité pour modifier les données historiques des commits. Cependant, ils peuvent aider en appliquant des politiques de référentiel qui encouragent ou obligent les contributeurs à utiliser des e-mails privés. Dans des cas extrêmes, ils peuvent aider à supprimer des données sensibles, mais cela implique généralement une réécriture de l’historique, ce qui peut affecter tous les contributeurs.

Foire aux questions sur la confidentialité des e-mails dans Git Commits

  1. Comment puis-je empêcher que mon e-mail soit exposé lors de futurs commits ?
  2. Définissez votre e-mail sur username@users.noreply.github.com dans votre configuration Git.
  3. Puis-je modifier l’e-mail pour les commits déjà poussés ?
  4. Oui, vous pouvez utiliser git filter-branch ou BFG Repo-Cleaner pour réécrire l'historique des commits et modifier l'e-mail.
  5. Quel est le moyen le plus simple de masquer mon e-mail lors de futurs commits ?
  6. Configurez votre compte GitHub pour utiliser une adresse e-mail privée et définissez l'adresse e-mail de votre client Git sur username@users.noreply.github.com.
  7. La modification d’un commit change-t-elle son historique ?
  8. Oui, git commit --amend modifie le commit le plus récent, qui peut être poussé de force pour mettre à jour le référentiel.
  9. Les responsables du référentiel peuvent-ils modifier mes informations de validation ?
  10. Les responsables ont une capacité limitée à modifier l'historique des validations, mais peuvent appliquer des politiques de confidentialité pour les futures validations.
  11. Est-il sécuritaire de réécrire l’historique des commits ?
  12. La réécriture de l’historique peut affecter la collaboration ; elle doit donc être effectuée avec soin, idéalement dans un environnement contrôlé.
  13. Quel est l’impact des changements forcés ?
  14. Le fait de forcer peut écraser l’historique, ce qui pourrait dérouter les collaborateurs, alors communiquez clairement avant de le faire.
  15. La confidentialité des e-mails peut-elle être appliquée dans l’ensemble d’une organisation ?
  16. Oui, les organisations GitHub peuvent définir des politiques et utiliser des outils tels que pre-commit hooks pour garantir la confidentialité des e-mails.
  17. Que sont les hooks de pré-commit ?
  18. Les hooks de pré-commit sont des scripts qui s'exécutent avant la création d'un commit, garantissant qu'il répond à certains critères comme l'utilisation d'un e-mail privé.

Réflexions finales sur la confidentialité des e-mails dans les commits Git

La protection de vos informations personnelles est essentielle, en particulier lorsque vous contribuez à des référentiels publics. En configurant vos paramètres Git pour utiliser une adresse privée et en utilisant des outils tels que git filter-branch et BFG Repo-Cleaner, vous pouvez supprimer efficacement les données personnelles de l’historique des validations. Bien que les responsables du référentiel aient un pouvoir limité pour modifier les informations de validation, ils peuvent prendre en charge les pratiques de confidentialité. Assurez-vous toujours de communiquer toute réécriture de l’historique avec votre équipe pour éviter toute confusion. Avec ces méthodes, vous pouvez préserver votre confidentialité tout en contribuant à des projets open source.