2009-05-22 145 views
63

我在Git上讀過的指南說,我應該進入配置並指定我的名字和我的電子郵件地址。他們沒有詳細說明;他們只是說要這樣做。Git公開暴露我的電子郵件地址嗎?

爲什麼Git需要我的電子郵件地址?而且,更重要的是,如果我通過GitHub公開提供我的回購站,那麼我的電子郵件地址是否可以被所有人(包括垃圾郵件)看到?

+13

我認爲這是一個有關編程相關工具的有效(雖然非技術性)問題 - 就像很多其他問題一樣 - 不應該被低估爲「與編程無關」。 – Jonik 2009-05-22 12:40:20

+2

GitHub現在(2013年8月)允許您保持您的電子郵件地址不公開!請參見[我的答案](http://stackoverflow.com/a/18186072/6309)。您也可以註冊一個虛假的電子郵件地址,以便在您推送給GitHub的提交中不使用它。 – VonC 2013-08-12 11:56:07

回答

29

Git使用您的電子郵件地址來標識您以及執行其他任務(例如使用GPG密鑰標記標籤)。您的電子郵件地址與您指定的名稱一起作爲您的身份的一部分嵌入在提交日誌等中。例如,在提交日誌「作者」字段將顯示爲:

Author: Joe White <[email protected]> 

所以信息可與回購的副本的人,因爲它作爲一個標識符。

您的電子郵件可能不會是垃圾郵件機器人可見,不過,除非你使用的GitWeb,或者像GitHub的服務,使您的回購可以通過一個Web界面(只是把它在互聯網上沒有做這個)。

我想你可以填寫一個虛假的電子郵件地址或使用空字符串或空格或別的東西(我不認爲Git檢查電子郵件的格式或有效性),但是如果有人克隆回購需要給你一個補丁或以某種方式與你聯繫。

+1

可以說github,gitweb等人應該可以像郵件列表存檔查看器一樣,爲電子郵件地址遮擋一個選項。雖然它是一個有效的電子郵件地址僅僅是一個約定,但是像'git send-email'這樣的工具是假設它是真實的(例如,自動cc_ing補丁作者) – araqnid 2009-05-22 19:06:21

4

是的,您的電子郵件地址(如git config user.email中指定的)將在GitWeb等Web界面中可見。此外,每個人都可以通過克隆存儲庫來了解您的電子郵件地址,儘管這可能還遠遠不止於垃圾郵件。雖然沒有人強迫你使用真實的電子郵件地址。如果沒有提供,Git會自動設置一個構建的電子郵件地址。在沒有user.email的我的機器上顯示「Foo < foo @ daughter。(none)>」的提交。

6

是,以上的答案是正確的......除非你想通常有相同的電子郵件地址,您的所有項目,那麼你會用命令:

git config --global user.email "[email protected]" 

您也可以編輯的.gitconfig文件在您的主目錄中的用戶部分。

您可以通過執行相同的命令而不使用全局選項來爲特定項目指定不同的電子郵件。

另外,我建議你可以混淆您的電子郵件,如果的提交是去一個公共區域:

briancolfer(at)comcast.net 

爲例。

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" = "[email protected]" ] 
then 
    cn="Your New Committer Name" 
    cm="Your New Committer Email" 
fi 
if [ "$GIT_AUTHOR_EMAIL" = "[email protected]" ] 
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" 
' 

here

9

GitHub上兩者有一個幫助一篇名爲Keeping your email address private,這開始了:

的Git需要你自己的身份,以便使提交,但你可以隱藏你的聯繫信息通過使用假地址。Git本身並不關心電子郵件是否有效。

相關提示:儘管Git並不關心,但如果您的提交沒有有效的電子郵件地址,某些項目可能無法接受您的投稿,因此您需要在遵循這些說明之前研究項目的投稿政策。

GitHub上沒有得到垃圾郵件的許多報告被髮送到Git的提交電子郵件地址,但如果你是擔心這個問題,這個指南可以幫助你解決這些問題。

該指南包含如何配置Git和GitHub以使用僞造地址的步驟。

4

GitHub上有一個幫助部分約setting your email address.

具體來說,它說:

好消息:你不用給一個有效的電子郵件。如果您擔心垃圾郵件,請改用假電子郵件。 [email protected]是一種常見的做法。

28

更新2017年4月

請參閱 「Private emails, now more private

GitHub上已經使用備用 「noreply」 電子郵件地址,到現在一會兒筆者基於網絡的支持提交。從今天開始,有另一種方式,以確保你通過命令行推到提交時GitHub的不小心發佈您的電子郵件地址。

Git使用您的電子郵件地址,您的姓名,任何提交您的作者關聯。一旦您將提交推送到GitHub上的公共存儲庫,也會發布作者身份元數據。

如果你想確保你不小心發佈您的電子郵件地址,只需選中「將我的電子郵件地址保密」和「塊命令行推,揭露我的電子郵件」在您的email settings選項。

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


注:啓動August, 9th 2013, you now can keep your email address private

這是一個基於Web的GitHub的操作,但:在提交仍然包含電子郵件地址,這可能會或可能不會比使用您的帳戶GitHub的一個相同。
下方看到「面具」是(git的承諾)的電子郵件了。

直到今天,所有基於Web的GitHub Flow都使用您的主要電子郵件地址。這包括創建,編輯和刪除文件,以及合併拉取請求。

但現在你可以讓你的電子郵件地址保密。要做到這一點,請訪問電子郵件設置頁面:

email settings

有了這個開啓,基於Web的操作將使用[email protected]電子郵件地址。


如果要隱藏你的電子郵件從您的計算機制造,GitHub上現在允許你寄存器不同的電子郵件地址:看this guide

你仍然需要推回至GitHub上之前配置(假冒)電子郵件在您的本地回購,如果你希望你的提交,以反映

git config --global user.email "[email protected]" # Set email to slightly changed value 
git config --global user.email # Verify the setting 
# [email protected] 

然後:

  • 轉到電子郵件設置菜單
  • 點擊「添加另一個電子郵件地址」
  • 輸入假電子郵件(例如「[email protected]」)並點擊「添加」

add new email address

需要注意的是:

此設置隻影響未來的承諾
如果您想從存儲庫的提交歷史記錄中清除真實的電子郵件地址,則必須重寫舊的提交。最簡單的方法是:

使用git filter-branch to rewrite the repository history並強制推送新的歷史記錄。

4

數以百萬計的GitHub的提交郵件:從GitHub檔案https://www.githubarchive.org出口犯提取https://github.com/cirosantilli/all-github-commit-emails

GitHub Archive從GitHub的事件API獲取數據:https://developer.github.com/v3/activity/events/types/#pushevent並每小時將其導出到Google BigQuery,這使查詢更容易。

電子郵件顯示在類型爲PushEvent的事件中。

我不認爲提交電子郵件會顯示在GitHub的Web界面上的任何位置,因此任何收集都受API速率限制。 TODO:多少時間通過API從頭開始收集1M郵件。

實用的方式來得到別人的提交電子郵件與API

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

或訪問:https://api.github.com/users/cirosantilli/events/public

還有:

相關問題