これまでにGitで読んだガイドでは、構成に移動して自分の名前と電子メールアドレスを指定する必要があると述べています。詳しくは説明しません。彼らはそれをするように言うだけです。
なぜGitは私の電子メールアドレスを必要とするのですか?さらに重要なことに、GitHubなどを使用してリポジトリを公開すると、私の電子メールアドレスがすべてのユーザー(スパムボットを含む)に表示されますか?
これまでにGitで読んだガイドでは、構成に移動して自分の名前と電子メールアドレスを指定する必要があると述べています。詳しくは説明しません。彼らはそれをするように言うだけです。
なぜGitは私の電子メールアドレスを必要とするのですか?さらに重要なことに、GitHubなどを使用してリポジトリを公開すると、私の電子メールアドレスがすべてのユーザー(スパムボットを含む)に表示されますか?
回答:
Gitはメールアドレスを使用してユーザーを識別し、他のタスク(GPGキーでタグに署名するなど)を実行します。メールアドレスは、指定した名前とともに、IDの一部としてコミットログなどに埋め込まれます。たとえば、コミットログの「author」フィールドは次のように表示されます。
Author: Joe White <joewhite@mysite.com>
したがって、情報は識別子として機能するため、リポジトリのコピーがあれば誰でも利用できます。
ただし、GitwebまたはGitHubのようなサービスを使用して、Webインターフェイス経由でリポジトリを利用できるようにしない限り、メールはスパムボットに表示されない可能性があります(単にインターネットに置くだけではこれは行われません)。
偽のメールアドレスを入力したり、空の文字列やスペースなどを使用したりできると思います(Gitがメールの形式や有効性をチェックすることはないと思います)が、リポジトリのクローンを作成する人が送信する必要がある場合、メールは役に立ちますパッチまたは何らかの方法で連絡します。
2017年4月の更新
「非公開のメールをもっとプライベートに」をご覧ください
GitHubは、しばらくの間、Webベースのコミットを作成するための代替「noreply」メールアドレスの使用をサポートしています。本日より、コマンドラインを介してGitHubにコミットをプッシュするときに、誤ってメールアドレスを公開しないようにする別の方法があります。
Gitはあなたのメールアドレスを使用して、作成したコミットに名前を関連付けます。GitHubのパブリックリポジトリにコミットをプッシュすると、著者情報メタデータも公開されます。
メールアドレスを誤って公開しないようにする場合は、メール設定の[メールアドレスを非公開にする]オプションと[コマンドラインプッシュをブロックしてメールを公開する]オプションをオンにします。
注:以下で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
リポジトリの歴史を書き換えると、新たな歴史を強制-押してください。
git
。 git
は汎用のオープンソースのリビジョン管理ツールですが、GitHubはgit
リポジトリを公開できるWebサイトです。GitHubはを作成しませんでした。GitHubはgit
、GitHubでうまく機能する非常に優れたWebサイトを作成しただけです。
GitHubには、「メールアドレスを非公開にする」というヘルプ記事があり、次のように始まります。
Gitではコミットを行うために自分を特定する必要がありますが、偽のアドレスを使用して連絡先情報を非表示にすることができます。Git自体は、メールが有効かどうかを気にしません。
知っておきたいこと:Gitは気にしませんが、コミットに有効なメールアドレスがない場合、一部のプロジェクトはあなたからの寄稿を受け入れない可能性があります。そのため、これらの手順に従う前に、プロジェクトの寄稿ポリシーを調査することをお勧めします。
GitHubは、Gitコミットメールアドレスに送信されるスパムの多くのレポートを取得しませんが、心配な場合は、このガイドがそれらの懸念への対処に役立つはずです。
このガイドには、偽のアドレスを使用するようにGitとGitHubの両方を構成する手順が含まれています。
はい、上記の答えは正しいです。ただし、通常はすべてのプロジェクトで同じメールアドレスを使用したい場合は、次のコマンドを使用します。
git config --global user.email "me@email.com"
ホームセクションのユーザーセクションで.gitconfigファイルを編集することもできます。
グローバルオプションなしで同じコマンドを実行することにより、特定のプロジェクトに別のメールを指定できます。
また、投稿がパブリックエリアに送信される場合は、メールを難読化することをお勧めします。
briancolfer(at)comcast.net
例として。
何百万もの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オブジェクトデータ構造のファイル形式は何ですか?
したがって、この情報がデフォルトでコミットに追加されることは明らかです。
著者名やメールなどをさかのぼって変更できます。次の操作を行うと履歴が破損する可能性があることに注意してください。
#!/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"
'
ここから撮影
GitHubには、メールアドレスの設定に関するヘルプセクションがあります。
特にそれは言う:
知っておきたいこと:有効なメールアドレスを入力する必要はありません。スパムが心配な場合は、代わりに偽のメールを使用してください。user@example.comは一般的な方法です。