web-dev-qa-db-ja.com

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

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

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

86
Joe White

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

Author: Joe White <[email protected]>

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

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

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

34
mipadi

2017年4月の更新

プライベートメール、よりプライベートになりました 」を参照してください

GitHubは、しばらくの間、Webベースのコミットを作成するための代替「noreply」メールアドレスの使用をサポートしています。本日より、コマンドラインを介してGitHubにコミットをプッシュするときに、誤ってメールアドレスを公開しないようにする別の方法があります。

Gitはあなたのメールアドレスを使用して、作成したコミットに名前を関連付けます。 GitHubのパブリックリポジトリにコミットをプッシュすると、著者情報メタデータも公開されます。

誤ってメールアドレスを公開しないようにするには、 メール設定 の[メールアドレスを非公開にする]オプションと[コマンドラインプッシュをブロックしてメールを公開する]オプションをオンにします。 。

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

注: 以下でコメントorev と同様、 Git は何も公開しません。 GitHub 、Gitリポジトリhostingサービスなど。
ローカルのGitリポジトリをプッシュしている場所でメタデータを公開できます。


注:開始 2013年8月9日、メールアドレスを非公開にできるようになりました

ただし、これはウェブベースのGitHubオペレーションの場合です。コミットにはまだメールアドレスが含まれており、GitHubアカウントで使用されているものと同じである場合とそうでない場合があります。
(git commit)メールも「マスク」するには、以下を参照してください。

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

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

email settings

これをオンにすると、Webベースの操作では、username @ users.noreply.github.comのメールアドレスが使用されます。


コンピューターから作成されたメールを非表示にする場合、GitHubで別のメールアドレスを登録することができますを参照 このガイド

コミットを反映させたい場合は、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リポジトリの履歴を書き換えます と新しい履歴を強制的にプッシュします。

39
VonC

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

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

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

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

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

10
Hugo

はい、上記の答えは正しいです。ただし、通常はすべてのプロジェクトで同じメールアドレスを使用したい場合は、次のコマンドを使用します。

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

ホームセクションのユーザーセクションで.gitconfigファイルを編集することもできます。

グローバルオプションなしで同じコマンドを実行することにより、特定のプロジェクトに別のメールを指定できます。

また、投稿がパブリックエリアに送信される場合は、メールを難読化することをお勧めします。

briancolfer(at)comcast.net

例として。

6
bcolfer

数百万のGitHubコミットメールhttps://github.com/cirosantilli/all-github-commit-emails から抽出GitHub Archives 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 config user.emailで指定)はGitWebなどのWebインターフェースに表示されます。また、誰もがリポジトリを複製することであなたのメールアドレスを知ることができますが、これはおそらくスパムボットをはるかに超えています。ただし、実際のメールアドレスを使用するように強制する人はいません。何も指定されていない場合、Gitは作成されたメールアドレスを自動的に設定します。 user.emailがないマシンでは、「Foo <foo @ daughter。(none)>」によるコミットが表示されます。

4
Bombe

著者名やメールなどをさかのぼって変更できます。次の操作を行うと履歴が破損する可能性があることに注意してください。

#!/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 から取得

4
eggonlegs

GitHubには、 メールアドレスの設定に関するヘルプセクションがあります

特にそれは言う:

知っておきたいこと:有効なメールアドレスを入力する必要はありません。スパムが心配な場合は、代わりに偽のメールを使用してください。 [email protected]は一般的な方法です。

4
g_fred