Gitは私の電子メールアドレスを公開していますか?


95

これまでにGitで読んだガイドでは、構成に移動して自分の名前と電子メールアドレスを指定する必要があると述べています。詳しくは説明しません。彼らはそれをするように言うだけです。

なぜGitは私の電子メールアドレスを必要とするのですか?さらに重要なことに、GitHubなどを使用してリポジトリを公開すると、私の電子メールアドレスがすべてのユーザー(スパムボットを含む)に表示されますか?


19
これは、SOに関する他の多くの質問と同様に、プログラミング関連のツールに関する有効な(技術的ではありませんが)質問であり、「プログラミング関連ではない」と反対する価値はないと思います。
Jonik、2009年

3
GitHub(2013年8月)では、メールアドレスを非公開にできます。以下の私の答えを参照しください。GitHubにプッシュしているコミットで使用しないように、偽のメールアドレスを登録することもできます。
VonC 2013

回答:


36

Gitはメールアドレスを使用してユーザーを識別し、他のタスク(GPGキーでタグに署名するなど)を実行します。メールアドレスは、指定した名前とともに、IDの一部としてコミットログなどに埋め込まれます。たとえば、コミットログの「author」フィールドは次のように表示されます。

Author: Joe White <joewhite@mysite.com>

したがって、情報は識別子として機能するため、リポジトリのコピーがあれば誰でも利用できます。

ただし、GitwebまたはGitHubのようなサービスを使用して、Webインターフェイス経由でリポジトリを利用できるようにしない限り、メールはスパムボットに表示されない可能性があります(単にインターネットに置くだけではこれは行われません)。

偽のメールアドレスを入力したり、空の文字列やスペースなどを使用したりできると思います(Gitがメールの形式や有効性をチェックすることはないと思います)が、リポジトリのクローンを作成する人が送信する必要がある場合、メールは役に立ちますパッチまたは何らかの方法で連絡します。


3
おそらくgithubやgitwebなどには、メーリングリストのアーカイブビューアと同じように、メールアドレスを隠すオプションが必要です。有効な電子メールアドレスであることは単なる慣例ですが、 'git send-email'などのツールは、それが真実であると想定して記述されます(たとえば、パッチ作成者を自動的にccする)
araqnid

2
タグの署名にGPGキー用にuser.nameおよびuser.emailで指定されたIDを使用するようにgitを構成できます
JakubNarębski

古い集中型バージョン管理システムは、(変更の)コミットの作成者を識別するために「ユーザー名」を使用します。名前+メールは適切なIDです。ただし、実際のメールである必要はありません。
JakubNarębski、2009年

3
- GitHubのは、あなたがあなたのプロフィールにリンクされている偽の電子メールアドレスを使用することができます更新ありstackoverflow.com/a/20533922/2158473
RyPeck

GitHubは、マージされた削除されたブランチでのPRコミットでさえも覚えておくことができます(したがって、PR Webページ以外のリポジトリのどこにも電子メール/名前を公開しないでください)。PRがマージされた場合、コミットを元に戻す方法はわかりません(まだ開いている場合は、リベースして強制的にプッシュできます)。
DA

43

2017年4月の更新

非公開のメールをもっとプライベートに」をご覧ください

GitHubは、しばらくの間、Webベースのコミットを作成するための代替「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)メールも「マスク」するには、以下を参照してください。

今日まで、すべてのWebベースのGitHub Flowはメインのメールアドレスを使用していました。これには、ファイルの作成、編集、削除、プルリクエストのマージが含まれます。

しかし今、あなたはあなたのメールアドレスをプライベートに保つことができます。これを行うには、メール設定ページにアクセスします。

メール設定

これをオンにすると、Webベースの操作では、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
これは知っておくと役に立ちますが、GitHubが同じではないことは非常にはっきりしいると思いますgitgitは汎用のオープンソースのリビジョン管理ツールですが、GitHubはgitリポジトリを公​​開できるWebサイトです。GitHubはを作成しませんでした。GitHubはgit、GitHubでうまく機能する非常に優れたWebサイトを作成しただけです。
18年

@ore​​v良い点。私はその警告を答えに含めました。
VonC 2018年

10

GitHubには、「メールアドレスを非公開する」というヘルプ記事があり、次のように始まります。

Gitではコミットを行うために自分を特定する必要がありますが、偽のアドレスを使用して連絡先情報を非表示にすることができます。Git自体は、メールが有効かどうかを気にしません。

知っておきたいこと:Gitは気にしませんが、コミットに有効なメールアドレスがない場合、一部のプロジェクトはあなたからの寄稿を受け入れない可能性があります。そのため、これらの手順に従う前に、プロジェクトの寄稿ポリシーを調査することをお勧めします。

GitHubは、Gitコミットメールアドレスに送信されるスパムの多くのレポートを取得しませんが、心配な場合は、このガイドがそれらの懸念への対処に役立つはずです。

このガイドには、偽のアドレスを使用するようにGitとGitHubの両方を構成する手順が含まれています。


GitHubのコミット電子メールアドレスに大量のスパムが届きます。専用の物を使っています。
Mitar 2014

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 Archiveは、GitHubのイベントAPI(https://developer.github.com/v3/activity/events/types/#pushevent)からデータを取得し、1時間ごとに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 commitデータ構造には、明示的な作成者とコミッターのメールフィールドがあります

表示:git commitオブジェクトデータ構造のファイル形式は何ですか?

したがって、この情報がデフォルトでコミットに追加されることは明らかです。


4

はい、メールアドレス(で指定git config user.email)はGitWebなどのWebインターフェースに表示されます。また、誰もがリポジトリを複製することであなたのメールアドレスを知ることができますが、これはおそらくスパムボットをはるかに超えています。ただし、実際のメールアドレスを使用するように強制される人はいません。何も指定されていない場合、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.