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 | 저장소 기록 정리 프로세스를 단순화하는 BFG Repo-Cleaner용 Java 아카이브 파일입니다. |
--replace-text | 저장소 기록의 특정 텍스트(이메일 주소)를 바꾸는 BFG Repo-Cleaner 명령입니다. |
git reflog expire | 재작성된 기록에 대한 참조를 정리하는 데 유용한 reflog의 항목을 만료합니다. |
git gc --prune=now | 기록을 다시 작성한 후 사용되는 가비지 수집을 수행하고 연결할 수 없는 개체를 즉시 정리합니다. |
git commit --amend | 새로운 작성자 정보나 커밋 콘텐츠 변경 사항으로 가장 최근의 커밋을 수정합니다. |
Git 커밋에서 개인 이메일 제거
풀 요청이 병합된 후 Git 커밋에서 개인 이메일 정보를 제거하는 데 도움이 되는 스크립트를 제공했습니다. 첫 번째 스크립트는 git filter-branch 커밋 기록을 다시 작성합니다. 이 명령은 각 커밋을 반복하여 작성자 또는 커미터 이메일이 이전 이메일과 일치하는지 확인합니다. 그렇다면 익명화된 새 이메일로 대체됩니다. 커밋 기록을 다시 작성한 후 원격 저장소를 업데이트하려면 강제 푸시가 필요합니다. 그만큼 export GIT_AUTHOR_EMAIL 그리고 export GIT_COMMITTER_EMAIL 여기서 명령은 다시 작성된 커밋에 올바른 이메일 정보가 있는지 확인하는 데 중요합니다.
두 번째 스크립트는 다음을 활용합니다. 삼, 이는 필터 분기에 대한 더 간단하고 빠른 대안입니다. 을 사용하여 --replace-text 명령을 사용하면 BFG는 저장소 기록 전체에서 이전 이메일의 모든 인스턴스를 새 이메일로 바꿀 수 있습니다. 교체 후 스크립트는 다음을 사용하여 가비지 수집을 수행합니다. git gc --prune=now 잔여 데이터를 정리합니다. 세 번째 스크립트는 다음을 사용하여 가장 최근 커밋을 수정하는 데 중점을 둡니다. git commit --amend, 전체 기록을 다시 쓰지 않고도 작성자 정보를 빠르게 변경할 수 있습니다.
Git 필터 분기를 사용하여 커밋 기록 다시 쓰기
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 사용
BFG Repo-Cleaner로 Java 활용
# 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. GitHub에서 제공하는 개인 이메일 주소를 사용하도록 Git 클라이언트를 구성하면 향후 커밋에서 실제 이메일이 노출되는 것을 방지할 수 있습니다. 이메일을 다음 형식으로 설정하면 됩니다. username@users.noreply.github.com. 또한 GitHub 설정에서 이메일 개인 정보 보호를 활성화하면 개인 이메일이 웹 기반 Git 작업에 사용됩니다.
이미 푸시되고 병합된 커밋의 경우 GitHub의 관리자는 기록 커밋 데이터를 변경할 수 있는 권한이 제한되어 있습니다. 그러나 기여자가 개인 이메일을 사용하도록 장려하거나 요구하는 저장소 정책을 시행함으로써 도움을 줄 수 있습니다. 극단적인 경우 민감한 데이터를 제거하는 데 도움이 될 수 있지만 일반적으로 이 작업에는 기록 재작성이 포함되어 모든 기여자에게 영향을 미칠 수 있습니다.
Git 커밋의 이메일 개인 정보 보호에 대해 자주 묻는 질문
- 향후 커밋에서 내 이메일이 노출되는 것을 방지하려면 어떻게 해야 합니까?
- 이메일을 다음으로 설정하세요. username@users.noreply.github.com Git 구성에서.
- 이미 푸시된 커밋의 이메일을 변경할 수 있나요?
- 예, 사용할 수 있습니다 git filter-branch 또는 삼 커밋 기록을 다시 작성하고 이메일을 변경합니다.
- 향후 커밋에서 내 이메일을 숨기는 가장 쉬운 방법은 무엇입니까?
- 개인 이메일을 사용하도록 GitHub 계정을 구성하고 Git 클라이언트의 이메일을 다음으로 설정하세요. username@users.noreply.github.com.
- 커밋을 수정하면 기록이 변경되나요?
- 예, git commit --amend 저장소를 업데이트하기 위해 강제로 푸시될 수 있는 가장 최근 커밋을 변경합니다.
- 저장소 관리자가 내 커밋 정보를 변경할 수 있나요?
- 유지관리자는 커밋 기록을 변경할 수 있는 능력이 제한되어 있지만 향후 커밋에 대해 개인정보 보호 정책을 시행할 수 있습니다.
- 커밋 기록을 다시 작성해도 안전합니까?
- 기록 재작성은 공동 작업에 영향을 미칠 수 있으므로 통제된 환경에서 신중하게 수행해야 합니다.
- 강제 푸시 변경은 어떤 영향을 미치나요?
- 강제 푸시는 기록을 덮어쓰게 되어 공동 작업자에게 혼란을 줄 수 있으므로 그렇게 하기 전에 명확하게 소통하세요.
- 이메일 개인정보 보호를 조직 전체에 적용할 수 있나요?
- 예, GitHub 조직은 정책을 설정하고 다음과 같은 도구를 사용할 수 있습니다. pre-commit hooks 이메일 개인 정보 보호를 보장합니다.
- 사전 커밋 후크란 무엇입니까?
- 사전 커밋 후크는 커밋이 생성되기 전에 실행되는 스크립트로, 개인 이메일 사용과 같은 특정 기준을 충족하는지 확인합니다.
Git 커밋의 이메일 개인 정보 보호에 대한 최종 생각
특히 공개 저장소에 기여할 때 개인 정보를 보호하는 것이 필수적입니다. 개인 주소를 사용하고 다음과 같은 도구를 활용하도록 Git 설정을 구성합니다. git filter-branch 그리고 삼, 커밋 기록에서 개인 데이터를 효과적으로 제거할 수 있습니다. 저장소 관리자는 커밋 정보를 변경할 수 있는 권한이 제한되어 있지만 개인 정보 보호 관행을 지원할 수 있습니다. 혼란을 피하기 위해 기록 재작성 내용을 항상 팀과 소통하세요. 이러한 방법을 사용하면 오픈 소스 프로젝트에 기여하면서 개인 정보를 보호할 수 있습니다.