Защита конфиденциальности вашей электронной почты на 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 | Истекает срок действия записей в журнале ссылок, что полезно для очистки ссылок на переписанную историю. |
git gc --prune=now | Выполняет сборку мусора и немедленно удаляет недоступные объекты, используемые после перезаписи истории. |
git commit --amend | Вносит изменения в самый последний коммит, добавляя новую информацию об авторе или внося изменения в содержимое коммита. |
Удаление личной электронной почты из коммитов Git
Сценарии помогли удалить личную информацию об электронной почте из коммитов Git после объединения запроса на включение. Первый скрипт использует переписать историю коммитов. Эта команда перебирает каждый коммит, проверяя, соответствует ли адрес электронной почты автора или коммиттера старому адресу электронной почты. Если это так, он заменяет его новым анонимным электронным письмом. После перезаписи истории коммитов требуется принудительное нажатие для обновления удаленного репозитория. и Здесь команды имеют решающее значение, чтобы гарантировать, что переписанные коммиты содержат правильную информацию об электронной почте.
Второй скрипт использует , что является более простой и быстрой альтернативой filter-branch. С помощью Команда BFG может заменить все экземпляры старого электронного письма новым на протяжении всей истории хранилища. После замены скрипт выполняет сборку мусора с помощью для очистки любых остаточных данных. Третий скрипт фокусируется на изменении самого последнего коммита, используя 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, — это использование . Настроив свой клиент Git на использование частного адреса электронной почты, предоставленного GitHub, вы сможете избежать раскрытия своего реального адреса электронной почты при будущих коммитах. Это можно сделать, установив адрес электронной почты в формате . Кроме того, включение конфиденциальности электронной почты в настройках GitHub гарантирует, что ваша личная электронная почта будет использоваться для веб-операций Git.
Для коммитов, которые уже были отправлены и объединены, сопровождающие GitHub имеют ограниченные возможности по изменению исторических данных коммитов. Однако они могут помочь, применяя политики репозитория, которые поощряют или требуют от участников использовать частные электронные письма. В крайних случаях они могут помочь удалить конфиденциальные данные, но обычно это предполагает перезапись истории, что может повлиять на всех участников.
- Как я могу предотвратить раскрытие моей электронной почты в будущих коммитах?
- Установите адрес электронной почты на в вашей конфигурации Git.
- Могу ли я изменить адрес электронной почты для уже отправленных коммитов?
- Да, вы можете использовать или переписать историю коммитов и изменить адрес электронной почты.
- Какой самый простой способ скрыть мой адрес электронной почты в будущих коммитах?
- Настройте свою учетную запись GitHub на использование частного адреса электронной почты и установите адрес электронной почты вашего клиента Git на .
- Изменяет ли изменение коммита его историю?
- Да, изменяет самый последний коммит, который можно принудительно отправить для обновления репозитория.
- Могут ли сопровождающие репозитория изменить информацию о моем коммите?
- Специалисты по сопровождению имеют ограниченные возможности изменять историю коммитов, но могут применять политику конфиденциальности для будущих коммитов.
- Безопасно ли переписывать историю коммитов?
- Переписывание истории может повлиять на сотрудничество, поэтому делать это следует осторожно, в идеале — в контролируемой среде.
- Каково влияние насильственных изменений?
- Принудительное нажатие может перезаписать историю, что может запутать соавторов, поэтому четко сообщите об этом, прежде чем делать это.
- Можно ли обеспечить конфиденциальность электронной почты во всей организации?
- Да, организации GitHub могут устанавливать политики и использовать такие инструменты, как для обеспечения конфиденциальности электронной почты.
- Что такое крючки перед фиксацией?
- Перехватчики перед фиксацией — это сценарии, которые запускаются перед созданием фиксации, гарантируя, что она соответствует определенным критериям, например, использованию частной электронной почты.
Защита вашей личной информации имеет важное значение, особенно при работе с публичными репозиториями. Настроив параметры Git для использования частного адреса и используя такие инструменты, как и вы можете эффективно удалить личные данные из истории коммитов. Хотя сопровождающие репозитория имеют ограниченные возможности по изменению информации о фиксации, они могут поддерживать правила конфиденциальности. Всегда сообщайте своей команде о любых изменениях истории, чтобы избежать путаницы. С помощью этих методов вы можете сохранить свою конфиденциальность, внося свой вклад в проекты с открытым исходным кодом.