Git เปิดเผยที่อยู่อีเมลของฉันต่อสาธารณะหรือไม่


96

คำแนะนำที่ฉันอ่านจนถึงตอนนี้เกี่ยวกับ Git บอกว่าฉันควรเข้าไปใน config และระบุชื่อและที่อยู่อีเมลของฉัน พวกเขาไม่ละเอียด พวกเขาบอกว่าจะทำ

ทำไม Git ถึงต้องการที่อยู่อีเมลของฉัน และที่สำคัญกว่านั้นคือถ้าฉันทำให้ repo ของฉันเปิดเผยต่อสาธารณะผ่าน GitHub ที่อยู่อีเมลของฉันจะปรากฏให้ทุกคนเห็น (รวมถึงสแปมบอท) หรือไม่


19
ฉันคิดว่านี่เป็นคำถามที่ถูกต้อง (แม้ว่าจะไม่ใช่ด้านเทคนิค) เกี่ยวกับเครื่องมือที่เกี่ยวข้องกับการเขียนโปรแกรมเช่นเดียวกับคำถามอื่น ๆ ใน SO - และไม่สมควรที่จะถูกลงคะแนนว่า "ไม่เกี่ยวข้องกับการเขียนโปรแกรม"
Jonik

3
GitHub ตอนนี้ (สิงหาคม 2013) ช่วยให้คุณเก็บที่อยู่อีเมลของคุณไว้เป็นส่วนตัว! ดูคำตอบของฉันด้านล่าง คุณสามารถลงทะเบียนที่อยู่อีเมลปลอมได้เช่นกันเพื่อที่จะไม่ใช้ในการคอมมิตที่คุณส่งไปยัง GitHub
VonC

คำตอบ:


36

Git ใช้ที่อยู่อีเมลของคุณเพื่อระบุตัวคุณรวมทั้งทำงานอื่น ๆ (เช่นเซ็นชื่อแท็กด้วยคีย์ GPG) ที่อยู่อีเมลของคุณจะถูกฝังเป็นส่วนหนึ่งของข้อมูลประจำตัวของคุณในบันทึกคอมมิต ฯลฯ พร้อมกับชื่อที่คุณระบุ ตัวอย่างเช่นช่อง "ผู้เขียน" ในบันทึกการคอมมิตจะแสดงเป็น:

Author: Joe White <joewhite@mysite.com>

ดังนั้นข้อมูลจึงพร้อมใช้งานสำหรับทุกคนที่มีสำเนา repo เนื่องจากทำหน้าที่เป็นตัวระบุ

อีเมลของคุณอาจมองไม่เห็นสแปมบอทแม้ว่าคุณจะไม่ใช้ Gitweb หรือบริการเช่น GitHub เพื่อให้ repo ของคุณพร้อมใช้งานผ่านเว็บอินเทอร์เฟซ (เพียงแค่วางไว้บนอินเทอร์เน็ตเท่านั้นไม่ได้ทำเช่นนี้)

ฉันคิดว่าคุณสามารถกรอกที่อยู่อีเมลปลอมหรือใช้สตริงว่างหรือช่องว่างหรืออะไรก็ได้ (ฉันไม่คิดว่า Git จะตรวจสอบรูปแบบหรือความถูกต้องของอีเมล) แต่อีเมลจะมีประโยชน์หากคนที่โคลน repo ต้องส่ง คุณแพทช์หรือติดต่อคุณไม่ทางใดก็ทางหนึ่ง


3
github, gitweb et al ควรมีตัวเลือกสำหรับการปิดบังที่อยู่อีเมลเช่นเดียวกับที่ผู้ชมเก็บรายชื่ออีเมล แม้ว่าจะเป็นที่อยู่อีเมลที่ถูกต้องเป็นเพียงแบบแผน แต่เครื่องมือเช่น 'git send-email' ถูกเขียนขึ้นโดยสมมติว่าเป็นความจริง (เช่นผู้เขียนโปรแกรมแก้ไข cc'ing โดยอัตโนมัติ)
araqnid

2
คุณสามารถกำหนดค่า git เพื่อใช้ข้อมูลประจำตัวอื่น ๆ ที่กำหนดโดย user.name และ user.email สำหรับคีย์ GPG สำหรับการลงนามแท็ก
Jakub Narębski

ระบบควบคุมเวอร์ชันส่วนกลางที่เก่ากว่าใช้ "ชื่อผู้ใช้" สำหรับระบุผู้เขียนคอมมิต (ของการเปลี่ยนแปลง) ชื่อ + อีเมลเป็นตัวตนที่ดี ไม่จำเป็นต้องเป็นอีเมลจริง
Jakub Narębski

3
GitHub มีการอัปเดตที่คุณสามารถใช้ที่อยู่อีเมลปลอมที่เชื่อมโยงกับโปรไฟล์ของคุณได้ - stackoverflow.com/a/20533922/2158473
RyPeck

GitHub สามารถจำได้แม้กระทั่ง PR ที่กระทำในสาขาที่ถูกลบซึ่งรวมกับ sing rebase (ดังนั้นอย่าเปิดเผยอีเมล / ชื่อที่ใดก็ได้ใน repo ยกเว้นในหน้าเว็บ PR) หาก PR ถูกรวมเข้าด้วยกันฉันไม่รู้วิธีใดในการย้อนกลับการคอมมิต (หากยังเปิดอยู่คุณสามารถปรับฐานและบังคับให้พุชได้)
DA

44

อัปเดตเมษายน 2017

ดู " อีเมลส่วนตัวตอนนี้เป็นส่วนตัวมากขึ้น "

GitHub ได้รับการสนับสนุนโดยใช้ที่อยู่อีเมล "noreply" สำรองเพื่อสร้างการกระทำบนเว็บมาระยะหนึ่งแล้ว ตั้งแต่วันนี้เป็นต้นไปมีอีกวิธีหนึ่งที่จะทำให้แน่ใจว่าคุณจะไม่เผยแพร่ที่อยู่อีเมลของคุณโดยไม่ได้ตั้งใจเมื่อกด Commits ไปที่ GitHub ผ่านทางบรรทัดคำสั่ง

Git ใช้ที่อยู่อีเมลของคุณเพื่อเชื่อมโยงชื่อของคุณกับสิ่งที่คุณเขียน เมื่อคุณส่งคอมมิตของคุณไปยังที่เก็บสาธารณะบน GitHub ข้อมูลเมตาของผู้แต่งจะถูกเผยแพร่ด้วยเช่นกัน

หากคุณต้องการเพื่อให้แน่ใจว่าคุณไม่ได้ตั้งใจเผยแพร่ที่อยู่อีเมลของคุณเพียงแค่ตรวจสอบ "เก็บอยู่อีเมลของฉันส่วนตัว" และ "บล็อกดันบรรทัดคำสั่งที่เปิดเผยอีเมลของฉัน" ตัวเลือกของคุณในการตั้งค่าอีเมล

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

หมายเหตุ: เป็นความเห็นด้านล่างโดยorev , Gitไม่เปิดเผยอะไร GitHubซึ่งเป็นบริการโฮสต์ที่เก็บ Git อาจ
สถานที่ที่คุณกำลังผลักดัน Git repo ในเครื่องของคุณสามารถเปิดเผยข้อมูลเมตาได้


หมายเหตุ: ตั้งแต่ วันที่ 9 สิงหาคม 2013 เป็นต้นไปคุณสามารถเก็บที่อยู่อีเมลของคุณไว้เป็นส่วนตัวได้แล้ว !

นั่นมีไว้สำหรับการดำเนินการ GitHub บนเว็บ: คอมมิตยังคงมีที่อยู่อีเมลซึ่งอาจเป็นหรือไม่เหมือนกับที่ใช้สำหรับบัญชี GitHub ของคุณ
ดูด้านล่างเพื่อ "มาสก์" ที่ (คอมมิตคอมมิต) อีเมลด้วย

จนถึงวันนี้ GitHub Flow บนเว็บทั้งหมดใช้ที่อยู่อีเมลหลักของคุณ ซึ่งรวมถึงการสร้างแก้ไขและลบไฟล์ตลอดจนการรวมคำขอดึง

แต่ตอนนี้คุณสามารถเก็บที่อยู่อีเมลของคุณไว้เป็นส่วนตัวได้แล้ว โดยไปที่หน้าการตั้งค่าอีเมลของคุณ:

การตั้งค่าอีเมล

เมื่อเปิดใช้งานการดำเนินการบนเว็บจะใช้ที่อยู่อีเมล username@users.noreply.github.com


หากคุณต้องการซ่อนอีเมลที่สร้างจากคอมพิวเตอร์ตอนนี้ GitHub อนุญาตให้คุณลงทะเบียนที่อยู่อีเมลอื่นได้แล้ว : ดูคู่มือนี้

คุณยังต้องกำหนดค่าอีเมล (ปลอม) ของคุณใน repo ในพื้นที่ของคุณก่อนที่จะส่งกลับไปที่ 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
สิ่งนี้มีประโยชน์ที่จะทราบอย่างไรก็ตามฉันคิดว่ามันควรจะชัดเจนมากว่าGitHubไม่เหมือนกัน a git. gitเป็นวัตถุประสงค์ทั่วไปโอเพ่นซอร์สเครื่องมือควบคุมการแก้ไขในขณะที่ GitHub เป็นเว็บไซต์ที่อนุญาตให้คุณเผยแพร่ที่gitเก็บ GitHub ไม่ได้สร้างgitขึ้นพวกเขาเพิ่งจะสร้างเว็บไซต์ที่ดีมากที่ใช้งานได้ดี
orev

@orev จุดดี. ฉันได้รวมคำเตือนนั้นไว้ในคำตอบแล้ว
VonC

10

GitHub มีบทความช่วยเหลือชื่อการรักษาที่อยู่อีเมลของคุณให้เป็นส่วนตัวซึ่งเริ่มต้น:

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 Archives https://www.githubarchive.orgส่งออกกระทำ

GitHub Archive รับข้อมูลจาก API เหตุการณ์ของ GitHub: https://developer.github.com/v3/activity/events/types/#pusheventและส่งออกไปยัง Google BigQuery ทุกชั่วโมงซึ่งช่วยให้สืบค้นได้ง่ายขึ้น

PushEventอีเมลจะแสดงให้เห็นถึงเหตุการณ์ที่เกิดขึ้นชนิด

ฉันไม่คิดว่าอีเมลคอมมิตจะแสดงที่ใดก็ได้บนเว็บอินเตอร์เฟสของ GitHub ดังนั้นคอลเลกชันใด ๆ จึงถูก จำกัด โดยการ จำกัด อัตรา API สิ่งที่ต้องทำ: ระยะเวลาในการรวบรวมอีเมล 1 ล้านฉบับผ่าน API ตั้งแต่เริ่มต้น

วิธีที่เป็นประโยชน์ในการรับอีเมลยืนยันของใครบางคนด้วย API

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

หรือเยี่ยมชม: https://api.github.com/users/cirosantilli/events/public

นอกจากนี้ยังมี:

โครงสร้างข้อมูลคอมมิตของ Git มีฟิลด์อีเมลผู้เขียนและคอมมิตอย่างชัดเจน

แสดงที่: รูปแบบไฟล์ของโครงสร้างข้อมูลออบเจ็กต์คอมมิตคอมมิตคืออะไร?

ดังนั้นจึงเป็นที่ชัดเจนว่าข้อมูลนี้จะถูกเพิ่มเพื่อคอมมิตโดยค่าเริ่มต้น


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.