Git có công khai địa chỉ e-mail của tôi không?


96

Các hướng dẫn mà tôi đã đọc cho đến nay trên Git nói rằng tôi nên đi vào cấu hình và chỉ định tên và địa chỉ e-mail của mình. Họ không nói rõ; họ chỉ nói làm điều đó.

Tại sao Git cần địa chỉ e-mail của tôi? Và quan trọng hơn, nếu tôi công bố công khai repo của mình, chẳng hạn như thông qua GitHub, thì địa chỉ e-mail của tôi có hiển thị với mọi người (kể cả spam bots) không?


19
Tôi nghĩ rằng đây là một câu hỏi hợp lệ (mặc dù không liên quan đến kỹ thuật) về một công cụ liên quan đến lập trình - giống như rất nhiều câu hỏi khác trên SO - và không đáng bị loại bỏ vì "không liên quan đến lập trình".
Jonik

3
GitHub bây giờ (tháng 8 năm 2013) cho phép bạn giữ địa chỉ email của mình ở chế độ riêng tư! Xem câu trả lời của tôi dưới đây . Bạn cũng có thể đăng ký một địa chỉ email giả để không sử dụng nó trong các cam kết mà bạn đang đẩy lên GitHub.
VonC

Câu trả lời:


36

Git sử dụng địa chỉ email của bạn để nhận dạng bạn, cũng như thực hiện các tác vụ khác (chẳng hạn như ký thẻ bằng khóa GPG). Địa chỉ email của bạn được nhúng như một phần của danh tính của bạn trong nhật ký cam kết, v.v., cùng với tên bạn chỉ định. Ví dụ: trường "tác giả" trong nhật ký cam kết sẽ hiển thị dưới dạng:

Author: Joe White <joewhite@mysite.com>

Vì vậy, thông tin có sẵn cho bất kỳ ai có bản sao của repo, vì nó hoạt động như một định danh.

Email của bạn có thể sẽ không hiển thị với spam bots, trừ khi bạn sử dụng Gitweb hoặc một dịch vụ như GitHub, để cung cấp repo của bạn thông qua giao diện web (chỉ đưa nó lên Internet thì không làm được điều này).

Tôi cho rằng bạn có thể điền vào một địa chỉ email giả mạo hoặc sử dụng một chuỗi hoặc khoảng trắng trống hoặc một cái gì đó (tôi không nghĩ Git sẽ kiểm tra định dạng hoặc tính hợp lệ của email), nhưng email sẽ hữu ích nếu ai đó sao chép repo cần gửi bạn một bản vá hoặc liên hệ với bạn theo một cách nào đó.


3
Có thể cho rằng github, gitweb et al nên có một tùy chọn để che khuất địa chỉ email giống như những người xem kho lưu trữ danh sách gửi thư. Mặc dù nó là một địa chỉ email hợp lệ chỉ là một quy ước, các công cụ như 'git gửi-email' được viết giả định rằng đó là sự thật (tự động cách CC tác giả vá, ví dụ)
araqnid

2
Bạn có thể định cấu hình git để sử dụng danh tính khác được cung cấp bởi user.name và user.email cho khóa GPG để ký thẻ
Jakub Narębski

Hệ thống kiểm soát phiên bản tập trung cũ hơn sử dụng "tên người dùng" để xác định tác giả của một cam kết (của một thay đổi). Tên + email là danh tính tốt; nó không cần phải là email thật.
Jakub Narębski

3
GitHub có bản cập nhật nơi bạn có thể sử dụng địa chỉ e-mail giả được liên kết với hồ sơ của mình - stackoverflow.com/a/20533922/2158473
RyPeck

GitHub có thể nhớ thậm chí các cam kết PR trên một nhánh đã xóa đã được hợp nhất sing rebase (và do đó, không để lộ email / tên ở bất kỳ đâu trong repo ngoại trừ trên trang web PR). Nếu PR đã được hợp nhất, tôi không biết bất kỳ cách nào để đảo ngược các cam kết (nếu nó vẫn mở, bạn có thể rebase và buộc push).
DA

44

Cập nhật tháng 4 năm 2017

Xem " Email riêng tư, giờ đây riêng tư hơn "

GitHub đã hỗ trợ sử dụng một địa chỉ email "không trả lời" thay thế để tác giả các cam kết dựa trên web trong một thời gian. Bắt đầu từ hôm nay, có một cách khác để đảm bảo bạn không vô tình xuất bản địa chỉ email của mình khi đẩy các cam kết lên GitHub qua dòng lệnh.

Git sử dụng địa chỉ email của bạn để liên kết tên của bạn với bất kỳ cam kết nào mà bạn là tác giả. Sau khi bạn đẩy cam kết của mình lên kho lưu trữ công khai trên GitHub, siêu dữ liệu về quyền tác giả cũng được xuất bản.

Nếu bạn muốn đảm bảo mình không vô tình xuất bản địa chỉ email của mình, chỉ cần chọn tùy chọn "Giữ địa chỉ email của tôi ở chế độ riêng tư" và "Chặn dòng lệnh đẩy làm lộ email của tôi" trong cài đặt email của bạn .

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

Lưu ý: như nhận xét bên dưới của orev , Git không tiết lộ bất cứ điều gì. GitHub , một dịch vụ lưu trữ kho Git , có thể.
Nơi bạn đang đẩy repo Git cục bộ của mình có thể làm lộ siêu dữ liệu.


Lưu ý: Kể từ ngày 9 tháng 8 năm 2013, giờ đây bạn có thể giữ địa chỉ email của mình ở chế độ riêng tư !

Tuy nhiên, đó là đối với các hoạt động GitHub dựa trên web: các cam kết vẫn chứa địa chỉ email, có thể giống hoặc không thể giống với địa chỉ được sử dụng cho tài khoản GitHub của bạn.
Xem bên dưới để "che dấu" email (git commit) đó.

Cho đến hôm nay, tất cả GitHub Flow dựa trên web đều sử dụng địa chỉ email chính của bạn. Điều này bao gồm tạo, chỉnh sửa và xóa tệp, cũng như hợp nhất các yêu cầu kéo.

Nhưng bây giờ bạn có thể giữ địa chỉ email của mình ở chế độ riêng tư. Để làm như vậy, hãy truy cập trang cài đặt email của bạn:

cài đặt email

Khi bật tính năng này, các hoạt động dựa trên web sẽ sử dụng địa chỉ email username@users.noreply.github.com.


Nếu bạn muốn ẩn email được tạo từ máy tính của mình, GitHub hiện cho phép bạn đăng ký các địa chỉ email khác nhau : xem hướng dẫn này .

Bạn vẫn cần định cấu hình email (giả mạo) của mình trong kho lưu trữ cục bộ trước khi quay trở lại GitHub, nếu bạn muốn phản ánh cam kết của mình

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

Sau đó:

  • Chuyển đến menu cài đặt Email
  • Nhấp vào "Thêm địa chỉ email khác"
  • Nhập email giả mạo (ví dụ: " user@server.fake") và nhấp vào "Thêm"

thêm địa chỉ email mới

Lưu ý rằng:

Cài đặt này chỉ ảnh hưởng đến các cam kết trong tương lai .
Nếu bạn muốn xóa địa chỉ email thực của mình khỏi lịch sử cam kết của kho lưu trữ, bạn sẽ phải viết lại các cam kết cũ của mình. Cách dễ nhất để làm điều này là:

Sử dụng git filter-branchđể viết lại lịch sử kho lưu trữ và Buộc đẩy lịch sử mới lên.


1
Điều này rất hữu ích để biết, tuy nhiên tôi nghĩ cần phải nói rõ rằng GitHub không giống nhau a git. gitlà một mục đích chung, mã nguồn mở, công cụ kiểm soát sửa đổi, trong khi GitHub là một trang web cho phép bạn xuất bản một gitkho lưu trữ. GitHub không tạo ra git, họ chỉ tình cờ tạo ra một trang web rất đẹp và hoạt động tốt với nó.
orev

@orev Điểm tốt. Tôi đã bao gồm cảnh báo đó trong câu trả lời.
VonC

10

GitHub có một bài viết trợ giúp được gọi là Giữ địa chỉ email của bạn ở chế độ riêng tư , bắt đầu:

Git yêu cầu bạn xác định danh tính để thực hiện cam kết, nhưng bạn có thể ẩn thông tin liên hệ của mình bằng cách sử dụng địa chỉ giả. Bản thân Git không quan tâm đến việc email có hợp lệ hay không.

Điều cần biết: Mặc dù Git không quan tâm, một số dự án có thể không chấp nhận đóng góp từ bạn nếu cam kết của bạn không có địa chỉ email hợp lệ, vì vậy bạn sẽ muốn nghiên cứu các chính sách đóng góp của dự án trước khi làm theo các hướng dẫn này.

GitHub không nhận được nhiều báo cáo về việc thư rác được gửi đến các địa chỉ email Git cam kết, nhưng nếu bạn lo lắng về điều đó, hướng dẫn này sẽ giúp bạn giải quyết những lo lắng đó.

Hướng dẫn bao gồm các bước cách định cấu hình cả Git và GitHub để sử dụng địa chỉ giả.


Tôi đang nhận được rất nhiều thư rác đến địa chỉ e-mail cam kết GitHub của mình. Tôi sử dụng một cái dành riêng cho việc đó.
Mitar

6

Có, các câu trả lời trên đều đúng ... ngoại trừ bạn thường muốn có cùng một địa chỉ email cho tất cả các dự án của mình thì bạn sẽ sử dụng lệnh:

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

Bạn cũng có thể chỉnh sửa tệp .gitconfig trong thư mục chính của mình, trong phần người dùng.

Bạn có thể chỉ định một email khác cho một dự án cụ thể bằng cách thực hiện cùng một lệnh mà không có tùy chọn chung.

Ngoài ra, tôi khuyên bạn nên làm xáo trộn email của mình nếu các bài gửi được chuyển đến một khu vực công cộng:

briancolfer(at)comcast.net

Như một ví dụ.


5

Hàng triệu email cam kết GitHub bị rò rỉ

https://github.com/cirosantilli/all-github-commit-emails được trích xuất từ ​​GitHub Archives https://www.githubarchive.org xuất cam kết.

GitHub Archive lấy dữ liệu từ API sự kiện của GitHub: https://developer.github.com/v3/activity/events/types/#pushevent và xuất đó sang Google BigQuery hàng giờ để truy vấn dễ dàng hơn.

Email được hiển thị trên các sự kiện thuộc loại PushEvent .

Tôi không nghĩ rằng email cam kết hiển thị ở bất kỳ đâu trên giao diện web của GitHub, vì vậy bất kỳ bộ sưu tập nào cũng bị giới hạn bởi giới hạn tỷ lệ API. VIỆC CẦN LÀM: mất bao nhiêu thời gian để thu thập 1 triệu email qua API từ đầu.

Cách thực tế để nhận email cam kết của ai đó bằng API

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

hoặc truy cập: https://api.github.com/users/cirosantilli/events/public

Cũng có:

Cấu trúc dữ liệu cam kết Git có trường email tác giả và người cam kết rõ ràng

Hiển thị tại: Định dạng tệp của cấu trúc dữ liệu đối tượng git commit là gì?

Do đó, rõ ràng là thông tin này được thêm vào các cam kết theo mặc định.


4

Có, địa chỉ email của bạn (như được chỉ định trong git config user.email) sẽ hiển thị trong các giao diện web như GitWeb. Ngoài ra, mọi người có thể tìm hiểu địa chỉ email của bạn bằng cách sao chép kho lưu trữ của bạn mặc dù điều này có lẽ vẫn còn vượt xa spam bots. Tuy nhiên, không ai buộc bạn phải sử dụng địa chỉ email thực. Git sẽ tự động đặt một địa chỉ email được tạo nếu không có địa chỉ nào được cung cấp. Trên máy của tôi mà không có user.emailnó hiển thị cam kết của “Foo <foo @ daughter. (None)>”.


4

Bạn có thể thay đổi lại tên tác giả, email, v.v. HÃY CẨN THẬN rằng việc làm sau có thể làm hỏng lịch sử của bạn.

#!/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"
'

Lấy từ đây


4

GitHub có một phần trợ giúp về đặt địa chỉ email của bạn.

Cụ thể nó nói:

Điều cần biết: Bạn không cần phải cung cấp một email hợp lệ. Nếu bạn lo lắng về thư rác, hãy sử dụng email giả mạo. user@example.com là một thực tế phổ biến.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.