Git이 내 전자 메일 주소를 공개적으로 노출합니까?


96

지금까지 Git에서 읽은 가이드에서는 구성으로 이동하여 내 이름과 이메일 주소를 지정해야한다고 말합니다. 그들은 정교하지 않습니다. 그들은 단지 그것을하라고 말합니다.

Git에 내 전자 메일 주소가 필요한 이유는 무엇입니까? 그리고 더 중요한 것은, 예를 들어 GitHub를 통해 내 저장소를 공개적으로 사용할 수 있도록하면 내 이메일 주소가 모든 사람 (스팸봇 포함)에게 표시 되나요?


19
나는 이것이 프로그래밍 관련 도구에 대한 유효한 (비 기술적이지만) 질문이라고 생각합니다. SO에 대한 다른 많은 질문과 마찬가지로 "프로그래밍과 관련이없는"것으로 비판 할 가치가 없습니다.
Jonik

3
이제 GitHub (2013 년 8 월)를 통해 이메일 주소를 비공개로 유지할 수 있습니다! 아래 내 대답을 참조하십시오 . GitHub에 푸시하는 커밋에서 사용하지 않기 위해 가짜 이메일 주소도 등록 할 수 있습니다.
VonC 2013-08-12

답변:


36

Git은 이메일 주소를 사용하여 사용자를 식별하고 다른 작업 (예 : GPG 키로 태그에 서명)을 수행합니다. 이메일 주소는 사용자가 지정한 이름과 함께 커밋 로그 등에 ID의 일부로 포함됩니다. 예를 들어 커밋 로그의 "author"필드는 다음과 같이 표시됩니다.

Author: Joe White <joewhite@mysite.com>

따라서 정보는 식별자 역할을하므로 저장소 사본이있는 모든 사람이 사용할 수 있습니다.

웹 인터페이스를 통해 저장소를 사용할 수 있도록하기 위해 Gitweb 또는 GitHub와 같은 서비스를 사용하지 않는 한 (단순히 인터넷에 올리는 것은이 작업을 수행하지 않음) 이메일이 스팸봇에 표시되지 않을 수 있습니다 .

가짜 이메일 주소를 입력하거나 빈 문자열이나 공백 또는 무언가를 사용할 수 있다고 가정합니다 (Git가 이메일의 형식이나 유효성을 확인하지 않는다고 생각합니다). 패치를 받거나 어떤 식 으로든 연락 할 수 있습니다.


3
틀림없이 github, gitweb 등은 메일 링리스트 아카이브 뷰어처럼 이메일 주소를 가리는 옵션이 있어야합니다. 유효한 이메일 주소는 관례 일 뿐이지 만 'git send-email'과 같은 도구는 그것이 사실이라고 가정하여 작성되었습니다 (예 : 패치 작성자를 자동으로 참조)
araqnid

2
태그 서명을위한 GPG 키에 대해 user.name 및 user.email에서 제공 한 다른 ID를 사용하도록 git을 구성 할 수 있습니다.
Jakub Narębski

이전의 중앙 집중식 버전 제어 시스템은 커밋 (변경 사항) 작성자를 식별하기 위해 "사용자 이름"을 사용합니다. 이름 + 이메일은 좋은 신원입니다. 하지만 실제 이메일 일 필요는 없습니다.
Jakub Narębski

3
- GitHub의 당신이 당신의 프로필에 연결 가짜 전자 메일 주소를 사용할 수있는 업데이트가 stackoverflow.com/a/20533922/2158473을
RyPeck

GitHub는 병합 된 삭제 된 브랜치에 대한 PR 커밋까지도 기억할 수 있습니다 (따라서 PR 웹 페이지를 제외하고 리포지토리의 어디에도 이메일 / 이름을 노출하지 마십시오). PR이 병합 된 경우 커밋을 되돌릴 수있는 방법이 없습니다 (아직 열려있는 경우 리베이스하고 강제로 푸시 할 수 있음).
DA

44

2017 년 4 월 업데이트

" 비공개 이메일, 이제 더 비공개 "참조

GitHub는 잠시 동안 웹 기반 커밋을 작성하기 위해 대체 "noreply"이메일 주소 사용을 지원했습니다. 오늘부터 명령 줄을 통해 GitHub에 커밋을 푸시 할 때 실수로 이메일 주소를 게시하지 않도록하는 또 다른 방법이 있습니다.

Git은 이메일 주소를 사용하여 작성한 커밋에 이름을 연결합니다. 커밋을 GitHub의 퍼블릭 리포지토리에 푸시하면 저작 메타 데이터도 게시됩니다.

실수로 이메일 주소를 게시하지 않으려면 이메일 설정에서 '내 이메일 주소를 비공개로 유지'및 '내 이메일을 노출하는 명령 줄 푸시 차단'옵션을 선택 하면 됩니다.

https://cloud.githubusercontent.com/assets/33750/24673856/a995cb74-1947-11e7-8653-65bc604a4101.png

참고 : orev 에 의해 아래설명대로 Git 은 아무것도 노출하지 않습니다. Git 리포지토리 호스팅 서비스 인 GitHub 가 있습니다. 로컬 Git 저장소를 푸시하는 위치는 메타 데이터를 노출 할 수 있습니다.


참고 : 2013 년 8 월 9 일 부터 이제 이메일 주소를 비공개로 유지할 수 있습니다 !

이는 웹 기반 GitHub 작업을위한 것입니다. 커밋에는 여전히 GitHub 계정에 사용 된 주소와 같거나 같지 않을 수있는 이메일 주소가 포함되어 있습니다.
(git commit) 이메일도 "마스킹"하려면 아래를 참조하십시오.

오늘까지 모든 웹 기반 GitHub Flow는 기본 이메일 주소를 사용했습니다. 여기에는 파일 생성, 편집 및 삭제와 풀 요청 병합이 포함됩니다.

하지만 이제 이메일 주소를 비공개로 유지할 수 있습니다. 이렇게하려면 이메일 설정 페이지를 방문하세요.

이메일 설정

이 기능을 켜면 웹 기반 작업에서 username@users.noreply.github.com 이메일 주소를 사용합니다.


컴퓨터에서 만든 이메일을 숨기려면 이제 GitHub에서 다른 이메일 주소등록 할 수 있습니다 . 이 가이드를 참조 하세요 .

커밋을 반영하려면 GitHub로 푸시하기 전에 로컬 저장소에서 (가짜) 이메일을 구성해야합니다.

git config --global user.email "user@server.fake" # Set email to slightly changed value
git config --global user.email # Verify the setting
# user@server.fake

그때:

  • 이메일 설정 메뉴로 이동
  • "다른 이메일 주소 추가"를 클릭하십시오.
  • 가짜 이메일 (예 : " user@server.fake")을 입력하고 "추가"를 클릭합니다.

새 이메일 주소 추가

참고 :

이 설정은 향후 커밋에만 영향을줍니다 .
리포지토리의 커밋 내역에서 실제 이메일 주소를 지우려면 이전 커밋을 다시 작성해야합니다. 이를 수행하는 가장 쉬운 방법은 다음과 같습니다.

사용 git filter-branch저장소 역사를 다시 작성 하고 새 역사를 강제-밀어 넣습니다.


1
이것은 알아두면 유용하지만 GitHubgit. git범용, 오픈 소스, 개정 제어 도구 인 반면 GitHub는 git저장소 를 게시 할 수있는 웹 사이트입니다 . GitHub는을 만들지 않았고 git, 잘 작동하는 아주 멋진 웹 사이트를 만들었습니다.
orev

@orev 좋은 지적입니다. 나는 그 경고를 대답에 포함 시켰습니다.
VonC

10

GitHub에는 Keep your email address private 이라는 도움말 문서 가 있습니다.

Git은 커밋을하기 위해 자신을 식별해야하지만 가짜 주소를 사용하여 연락처 정보를 숨길 수 있습니다. Git 자체는 이메일이 유효한지 상관하지 않습니다.

알아두면 좋은 정보 : Git은 상관하지 않지만 커밋에 유효한 이메일 주소가없는 경우 일부 프로젝트에서 기여를 수락하지 않을 수 있으므로이 지침을 따르기 전에 프로젝트의 기여 정책을 조사하는 것이 좋습니다.

GitHub는 Git 커밋 이메일 주소로 스팸이 전송되었다는보고를 많이받지는 않지만 걱정이되는 경우이 가이드가 이러한 문제를 해결하는 데 도움이 될 것입니다.

이 가이드에는 가짜 주소를 사용하도록 Git 및 GitHub를 모두 구성하는 방법이 포함되어 있습니다.


내 GitHub 커밋 이메일 주소로 많은 스팸을 받고 있습니다. 나는 그것을 위해 전용을 사용합니다.
Mitar

6

예, 위의 답변은 정확합니다 ... 일반적으로 모든 프로젝트에 대해 동일한 이메일 주소를 사용하려는 경우를 제외하고 다음 명령을 사용합니다.

git config --global user.email "me@email.com"

사용자 섹션의 홈 디렉토리에있는 .gitconfig 파일을 편집 할 수도 있습니다.

전역 옵션없이 동일한 명령을 수행하여 특정 프로젝트에 대해 다른 이메일을 지정할 수 있습니다.

또한 제출물이 공개 영역으로 이동하는 경우 이메일을 난독화할 수 있습니다.

briancolfer(at)comcast.net

예로서.


5

수백만 개의 GitHub 커밋 이메일 유출

https://github.com/cirosantilli/all-github-commit-emails에서 추출한 GitHub 아카이브 https://www.githubarchive.org 내보내기 커밋.

GitHub 아카이브는 GitHub의 이벤트 API ( https://developer.github.com/v3/activity/events/types/#pushevent) 에서 데이터를 가져 와서 매시간 Google BigQuery로 내보내므로 쿼리하기가 더 쉽습니다.

유형의 이벤트에 이메일이 표시됩니다 PushEvent.

커밋 이메일이 GitHub의 웹 인터페이스 어디에도 표시되지 않는다고 생각하므로 모든 컬렉션은 API 속도 제한으로 제한됩니다. TODO : API를 통해 처음부터 100 만 개의 이메일을 수집하는 데 걸리는 시간입니다.

API로 누군가의 커밋 이메일을받는 실용적인 방법

ghmail() { curl "https://api.github.com/users/$1/events/public" | grep email; }
ghmail cirosantilli

또는 방문 : https://api.github.com/users/cirosantilli/events/public

또한 다음이 있습니다.

Git 커밋 데이터 구조에는 명시 적 작성자 및 커미터 이메일 필드가 있습니다.

표시 : git commit 개체 데이터 구조의 파일 형식은 무엇입니까?

따라서이 정보는 기본적으로 커밋에 추가됩니다.


4

예, 귀하의 이메일 주소 (에 지정된대로 git config user.email)는 GitWeb과 같은 웹 인터페이스에 표시됩니다. 또한 모든 사람이 저장소를 복제하여 이메일 주소를 알 수 있지만 스팸봇을 훨씬 능가합니다. 하지만 실제 이메일 주소를 사용하도록 강요하는 사람은 없습니다. Git은 지정된 이메일 주소가 없으면 자동으로 구성된 이메일 주소를 설정합니다. user.email그것이 없는 내 컴퓨터 에서“Foo <foo @ daughter. (none)>”에 의한 커밋을 보여줍니다.


4

작성자 이름, 이메일 등을 소급하여 변경할 수 있습니다. 다음을 수행하면 기록이 손상 될 수 있습니다.

#!/bin/sh

git filter-branch --env-filter '

an="$GIT_AUTHOR_NAME"
am="$GIT_AUTHOR_EMAIL"
cn="$GIT_COMMITTER_NAME"
cm="$GIT_COMMITTER_EMAIL"

if [ "$GIT_COMMITTER_EMAIL" = "your@email.to.match" ]
then
    cn="Your New Committer Name"
    cm="Your New Committer Email"
fi
if [ "$GIT_AUTHOR_EMAIL" = "your@email.to.match" ]
then
    an="Your New Author Name"
    am="Your New Author Email"
fi

export GIT_AUTHOR_NAME="$an"
export GIT_AUTHOR_EMAIL="$am"
export GIT_COMMITTER_NAME="$cn"
export GIT_COMMITTER_EMAIL="$cm"
'

여기 에서 찍은


4

GitHub에는 이메일 주소 설정 에 대한 도움말 섹션이 있습니다.

구체적으로 다음과 같습니다.

알아두면 좋은 정보 : 유효한 이메일을 제공 할 필요가 없습니다. 스팸이 걱정된다면 가짜 이메일을 사용하세요. user@example.com은 일반적인 관행입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.