Cómo eliminar el correo electrónico personal de las confirmaciones de Git

Cómo eliminar el correo electrónico personal de las confirmaciones de Git
Cómo eliminar el correo electrónico personal de las confirmaciones de Git

Protegiendo la privacidad de su correo electrónico en GitHub

Tener su correo electrónico personal expuesto en las confirmaciones de GitHub puede ser un problema de privacidad, especialmente cuando se trabaja en repositorios públicos. Si abrió una solicitud de extracción (PR) que se fusionó y notó que su correo electrónico personal está visible, es importante tomar medidas para ocultarlo.

En esta guía, exploraremos varios métodos para eliminar u ocultar su dirección de correo electrónico de la vista pública después de que se haya fusionado un PR. También discutiremos si los mantenedores tienen la capacidad de cambiar la información de confirmación y cómo modificar sus confirmaciones de manera efectiva.

Dominio Descripción
git filter-branch Reescribe el historial de confirmaciones para cambiar la información del autor y del confirmador en el repositorio de Git.
export GIT_AUTHOR_NAME Establece el nombre del autor de las confirmaciones que se reescriben en la operación de rama de filtro.
export GIT_AUTHOR_EMAIL Establece el correo electrónico del autor para las confirmaciones que se reescriben en la operación de rama de filtro.
wget Descarga archivos de Internet, que se utilizan aquí para descargar la herramienta BFG Repo-Cleaner.
bfg-1.13.0.jar Archivo Java Archive para BFG Repo-Cleaner, que simplifica el proceso de limpieza del historial del repositorio.
--replace-text Comando BFG Repo-Cleaner para reemplazar texto específico (direcciones de correo electrónico) en el historial del repositorio.
git reflog expire Vence las entradas en el reflog, lo cual es útil para limpiar referencias al historial reescrito.
git gc --prune=now Realiza la recolección de basura y elimina los objetos inalcanzables inmediatamente, y se utiliza después de reescribir el historial.
git commit --amend Modifica la confirmación más reciente con nueva información del autor o cambios en el contenido de la confirmación.

Eliminar el correo electrónico personal de las confirmaciones de Git

Los scripts brindaron ayuda para eliminar información de correo electrónico personal de las confirmaciones de Git después de que se fusionó una solicitud de extracción. El primer guión utiliza git filter-branch para reescribir el historial de confirmaciones. Este comando recorre cada confirmación y verifica si el correo electrónico del autor o del autor de la confirmación coincide con el correo electrónico anterior. Si es así, lo reemplaza con el nuevo correo electrónico anónimo. Después de reescribir el historial de confirmaciones, se requiere un envío forzado para actualizar el repositorio remoto. El export GIT_AUTHOR_EMAIL y export GIT_COMMITTER_EMAIL Los comandos son cruciales aquí para garantizar que las confirmaciones reescritas tengan la información de correo electrónico correcta.

El segundo guión aprovecha BFG Repo-Cleaner, que es una alternativa más simple y rápida a filter-branch. Al utilizar el --replace-text comando, BFG puede reemplazar todas las instancias del correo electrónico antiguo con el nuevo a lo largo del historial del repositorio. Después del reemplazo, el script realiza una recolección de basura con git gc --prune=now para limpiar cualquier dato residual. El tercer script se centra en modificar la confirmación más reciente usando git commit --amend, que permite cambios rápidos en la información del autor sin tener que reescribir todo el historial.

Uso de Git Filter-Branch para reescribir el historial de confirmaciones

Usando secuencias de comandos de Shell con 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/*'

Uso de BFG Repo-Cleaner para eliminar correos electrónicos más fácilmente

Utilizando Java con 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

Modificar la última confirmación para el cambio de correo electrónico

Uso de la línea de comando de Git para una modificación sencilla

# 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

Garantizar la privacidad después de fusionar una solicitud de extracción

Otro aspecto a considerar al intentar eliminar el correo electrónico personal de las confirmaciones de Git es el uso de GitHub’s personal email settings. Al configurar su cliente Git para usar una dirección de correo electrónico privada proporcionada por GitHub, puede evitar exponer su correo electrónico real en futuras confirmaciones. Esto se puede hacer configurando su correo electrónico en el formato username@users.noreply.github.com. Además, habilitar la privacidad del correo electrónico en la configuración de GitHub garantiza que su correo electrónico privado se utilice para operaciones de Git basadas en la web.

Para las confirmaciones que ya han sido impulsadas y fusionadas, los mantenedores de GitHub tienen poder limitado para cambiar los datos históricos de confirmaciones. Sin embargo, pueden ayudar haciendo cumplir políticas de repositorio que alienten o requieran que los contribuyentes utilicen correos electrónicos privados. En casos extremos, pueden ayudar a eliminar datos confidenciales, pero esto generalmente implica reescribir el historial, lo que puede afectar a todos los contribuyentes.

Preguntas frecuentes sobre la privacidad del correo electrónico en las confirmaciones de Git

  1. ¿Cómo puedo evitar que mi correo electrónico quede expuesto en futuras confirmaciones?
  2. Configura tu correo electrónico como username@users.noreply.github.com en su configuración de Git.
  3. ¿Puedo cambiar el correo electrónico de las confirmaciones ya enviadas?
  4. Si, puedes usar git filter-branch o BFG Repo-Cleaner para reescribir el historial de confirmaciones y cambiar el correo electrónico.
  5. ¿Cuál es la forma más sencilla de ocultar mi correo electrónico en futuras confirmaciones?
  6. Configure su cuenta de GitHub para usar un correo electrónico privado y configure el correo electrónico de su cliente Git en username@users.noreply.github.com.
  7. ¿Modificar una confirmación cambia su historia?
  8. Sí, git commit --amend cambia la confirmación más reciente, que se puede forzar para actualizar el repositorio.
  9. ¿Pueden los mantenedores del repositorio cambiar mi información de confirmación?
  10. Los mantenedores tienen una capacidad limitada para cambiar el historial de confirmaciones, pero pueden hacer cumplir las políticas de privacidad para futuras confirmaciones.
  11. ¿Es seguro reescribir el historial de confirmaciones?
  12. Reescribir el historial puede afectar la colaboración, por lo que debe hacerse con cuidado, idealmente en un entorno controlado.
  13. ¿Cuál es el impacto de los cambios que impulsan la fuerza?
  14. El uso de la fuerza puede sobrescribir el historial, lo que podría confundir a los colaboradores, así que comunícate claramente antes de hacerlo.
  15. ¿Se puede imponer la privacidad del correo electrónico en toda una organización?
  16. Sí, las organizaciones de GitHub pueden establecer políticas y utilizar herramientas como pre-commit hooks para garantizar la privacidad del correo electrónico.
  17. ¿Qué son los ganchos de precompromiso?
  18. Los enlaces de confirmación previa son secuencias de comandos que se ejecutan antes de que se cree una confirmación, lo que garantiza que cumpla con ciertos criterios, como el uso de un correo electrónico privado.

Reflexiones finales sobre la privacidad del correo electrónico en las confirmaciones de Git

Proteger su información personal es esencial, especialmente cuando contribuye a repositorios públicos. Configurando tus ajustes de Git para usar una dirección privada y utilizando herramientas como git filter-branch y BFG Repo-Cleaner, puede eliminar eficazmente datos personales del historial de confirmaciones. Si bien los mantenedores del repositorio tienen un poder limitado para alterar la información de confirmación, pueden respaldar las prácticas de privacidad. Asegúrese siempre de comunicar cualquier reescritura del historial a su equipo para evitar confusiones. Con estos métodos, puede mantener su privacidad mientras contribuye a proyectos de código abierto.