Як видалити особисту електронну пошту з Git Commits

Як видалити особисту електронну пошту з Git Commits
Як видалити особисту електронну пошту з Git Commits

Захист вашої конфіденційності електронної пошти на GitHub

Відкриття вашої особистої електронної пошти в комітах GitHub може бути проблемою конфіденційності, особливо під час роботи з публічними сховищами. Якщо ви відкрили запит на отримання (PR), який було об’єднано, і помітили, що ваша особиста електронна адреса видима, важливо вжити заходів, щоб приховати її.

У цьому посібнику ми розглянемо різні методи видалення або приховування вашої електронної адреси від загального перегляду після об’єднання PR. Ми також обговоримо, чи мають супроводжувачі можливість змінювати інформацію про коміти та як ефективно змінювати ваші коміти.

Команда опис
git filter-branch Переписує історію комітів, щоб змінити інформацію про автора та комітера в сховищі Git.
export GIT_AUTHOR_NAME Встановлює ім’я автора для комітів, які переписуються в операції фільтрування розгалуження.
export GIT_AUTHOR_EMAIL Встановлює електронну адресу автора для комітів, які переписуються в операції фільтрації розгалуження.
wget Завантажує файли з Інтернету, які використовуються тут для завантаження інструменту BFG Repo-Cleaner.
bfg-1.13.0.jar Архівний файл Java для BFG Repo-Cleaner, який спрощує процес очищення історії сховища.
--replace-text Команда BFG Repo-Cleaner для заміни певного тексту (адрес електронної пошти) в історії сховища.
git reflog expire Закінчується термін дії записів у reflog, що корисно для очищення посилань на переписану історію.
git gc --prune=now Виконує збирання сміття та негайно видаляє недоступні об’єкти, які використовуються після перезапису історії.
git commit --amend Доповнює останній комміт новою інформацією про автора або змінює вміст коміту.

Видалення особистої електронної пошти з Git Commits

Сценарії допомагали видаляти особисту інформацію електронної пошти з комітів Git після об’єднання запиту на отримання. Перший скрипт використовує git filter-branch щоб переписати історію комітів. Ця команда повторює кожну фіксацію, перевіряючи, чи збігається електронна адреса автора або комітера зі старою електронною поштою. Якщо це так, він замінить його новою, анонімною електронною поштою. Після перезапису історії комітів потрібне примусове натискання для оновлення віддаленого сховища. The export GIT_AUTHOR_EMAIL і export GIT_COMMITTER_EMAIL Команди є вирішальними тут, щоб переконатися, що переписані коміти мають правильну інформацію електронної пошти.

Другий сценарій використовує BFG Repo-Cleaner, що є простішою та швидшою альтернативою filter-branch. Використовуючи --replace-text BFG може замінити всі екземпляри старої електронної пошти на нове протягом історії сховища. Після заміни сценарій збирає сміття за допомогою git gc --prune=now щоб очистити всі залишкові дані. Третій сценарій зосереджений на внесенні змін до останнього використання коміту git commit --amend, що дозволяє швидко змінювати інформацію про автора без переписування всієї історії.

Використання Git Filter-Branch для переписування історії комітів

Використання сценаріїв оболонки з 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/*'

Використання BFG Repo-Cleaner для легшого видалення електронної пошти

Використання Java з 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

Внесення змін до останнього коміту для зміни електронної пошти

Використання командного рядка Git для простого внесення змін

# 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

Забезпечення конфіденційності після злиття запиту на витягування

Іншим аспектом, який слід враховувати під час спроби видалити особисту електронну пошту з комітів Git, є використання GitHub’s personal email settings. Налаштувавши свій клієнт Git на використання приватної адреси електронної пошти, наданої GitHub, ви можете уникнути розкриття справжньої електронної пошти під час майбутніх комітів. Це можна зробити, налаштувавши формат електронної пошти username@users.noreply.github.com. Крім того, увімкнення конфіденційності електронної пошти в налаштуваннях GitHub гарантує, що ваша приватна електронна адреса використовується для веб-операцій Git.

Для комітів, які вже були надіслані та об’єднані, супроводжувачі GitHub мають обмежені повноваження змінювати історичні дані комітів. Однак вони можуть допомогти, запровадивши політику сховища, яка заохочує або вимагає від співавторів використання приватних електронних листів. У крайніх випадках вони можуть допомогти у видаленні конфіденційних даних, але зазвичай це передбачає переписування історії, що може вплинути на всіх учасників.

Поширені запитання про конфіденційність електронної пошти в Git Commits

  1. Як я можу запобігти розкриттю електронної пошти під час майбутніх комітів?
  2. Установіть свою електронну адресу на username@users.noreply.github.com у вашій конфігурації Git.
  3. Чи можу я змінити електронну адресу для вже надісланих комітів?
  4. Так, можна використовувати git filter-branch або BFG Repo-Cleaner щоб переписати історію комітів і змінити електронну адресу.
  5. Який найпростіший спосіб приховати мою електронну адресу в майбутніх комітах?
  6. Налаштуйте свій обліковий запис GitHub на використання приватної електронної пошти та встановіть електронну адресу клієнта Git на username@users.noreply.github.com.
  7. Чи змінює коміт його історію?
  8. так, git commit --amend змінює останній комміт, який можна примусово натиснути для оновлення сховища.
  9. Чи можуть супроводжувачі репозиторію змінити мою інформацію про фіксацію?
  10. Супроводжувачі мають обмежені можливості змінювати історію комітів, але можуть застосовувати політику конфіденційності для майбутніх комітів.
  11. Чи безпечно переписувати історію комітів?
  12. Переписування історії може вплинути на співпрацю, тому це слід робити обережно, в ідеалі в контрольованому середовищі.
  13. Який вплив силових змін?
  14. Силове натискання може перезаписати історію, що може заплутати співавторів, тому чітко спілкуйтеся, перш ніж робити це.
  15. Чи можна забезпечити конфіденційність електронної пошти у всій організації?
  16. Так, організації GitHub можуть установлювати політики та використовувати такі інструменти, як pre-commit hooks щоб забезпечити конфіденційність електронної пошти.
  17. Що таке хуки перед фіксацією?
  18. Хуки перед фіксацією — це сценарії, які запускаються до створення коміту, гарантуючи, що він відповідає певним критеріям, як-от використання приватної електронної пошти.

Останні думки щодо конфіденційності електронної пошти в Git Commits

Захист вашої особистої інформації має важливе значення, особливо під час додавання до загальнодоступних сховищ. Налаштувавши налаштування Git на використання приватної адреси та використовуючи такі інструменти, як git filter-branch і BFG Repo-Cleaner, ви можете ефективно видалити особисті дані з історії комітів. Хоча супроводжувачі сховища мають обмежені повноваження змінювати інформацію про фіксацію, вони можуть підтримувати методи конфіденційності. Завжди повідомляйте свою команду про будь-які зміни історії, щоб уникнути плутанини. За допомогою цих методів ви можете зберегти свою конфіденційність, беручи участь у проектах з відкритим кодом.