Apakah Git membeberkan alamat email saya secara publik?

97

Panduan yang saya baca sejauh ini di Git mengatakan bahwa saya harus masuk ke konfigurasi dan menentukan nama dan alamat email saya. Mereka tidak merinci; mereka hanya mengatakan untuk melakukannya.

Mengapa Git membutuhkan alamat email saya? Dan, yang lebih penting, jika saya membuat repo saya tersedia untuk umum, melalui GitHub misalnya, apakah alamat email saya akan terlihat oleh semua orang (termasuk robot spam)?

Joe White
sumber
19
Saya pikir ini adalah pertanyaan yang valid (meskipun non-teknis) tentang alat yang berhubungan dengan pemrograman - seperti banyak pertanyaan lain tentang SO - dan tidak pantas untuk di-downvot sebagai "tidak terkait pemrograman".
Jonik
3
GitHub now (Agustus 2013) memungkinkan Anda untuk merahasiakan alamat email Anda! Lihat jawaban saya di bawah . Anda juga dapat mendaftarkan alamat email palsu, agar tidak menggunakannya dalam komitmen yang Anda dorong ke GitHub.
VonC

Jawaban:

37

Git menggunakan alamat email Anda untuk mengidentifikasi Anda, serta melakukan tugas lain (seperti menandatangani tag dengan kunci GPG). Alamat email Anda tertanam sebagai bagian dari identitas Anda di log komit, dll., Bersama dengan nama yang Anda tentukan. Misalnya, kolom "author" di log komit akan muncul sebagai:

Author: Joe White <[email protected]>

Jadi informasi tersedia untuk siapa saja yang memiliki salinan repo, karena berfungsi sebagai pengenal.

Email Anda mungkin tidak akan terlihat oleh robot spam, kecuali Anda menggunakan Gitweb, atau layanan seperti GitHub, untuk membuat repo Anda tersedia melalui antarmuka web (hanya dengan meletakkannya di Internet tidak melakukan ini).

Saya kira Anda dapat mengisi alamat email palsu atau menggunakan string kosong atau spasi atau sesuatu (menurut saya Git tidak memeriksa format atau validitas email), tetapi email tersebut berguna jika seseorang yang mengkloning repo perlu mengirim Anda patch atau menghubungi Anda dengan cara tertentu.

mipadi
sumber
3
Bisa dibilang github, gitweb dkk seharusnya memiliki opsi untuk mengaburkan alamat email seperti yang dilakukan pemirsa arsip milis. Meskipun alamat email yang valid hanyalah konvensi, alat seperti 'git send-email' ditulis dengan asumsi bahwa itu benar (secara otomatis meng-cc penulis patch, misalnya)
araqnid
2
Anda dapat mengkonfigurasi git untuk menggunakan identitas lain yang diberikan oleh user.name dan user.email untuk kunci GPG untuk menandatangani tag
Jakub Narębski
Sistem kontrol versi terpusat yang lebih lama menggunakan "nama pengguna" untuk mengidentifikasi pembuat komit (perubahan). Nama + email adalah identitas yang baik; ini tidak perlu email asli.
Jakub Narębski
3
GitHub memiliki pembaruan di mana Anda dapat menggunakan alamat email palsu yang ditautkan ke profil Anda - stackoverflow.com/a/20533922/2158473
RyPeck
GitHub bahkan dapat mengingat komitmen PR pada cabang yang dihapus yang digabungkan dengan rebase (dan karenanya, jangan mengekspos email / nama di mana pun di repo kecuali di halaman web PR). Jika PR digabungkan, saya tidak tahu cara untuk membalikkan komitmen (jika masih terbuka Anda dapat melakukan rebase dan memaksa push).
DA
45

Perbarui April 2017

Lihat " Email pribadi, sekarang lebih pribadi "

GitHub telah mendukung penggunaan alamat email alternatif "noreply" untuk membuat komitmen berbasis web untuk sementara waktu sekarang. Mulai hari ini, ada cara lain untuk memastikan Anda tidak secara tidak sengaja mempublikasikan alamat email Anda saat mendorong komit ke GitHub melalui baris perintah.

Git menggunakan alamat email Anda untuk mengasosiasikan nama Anda dengan komitmen apa pun yang Anda buat. Setelah Anda memasukkan komitmen Anda ke repositori publik di GitHub, metadata kepengarangan juga akan dipublikasikan.

Jika Anda ingin memastikan Anda tidak memublikasikan alamat email Anda secara tidak sengaja, cukup centang opsi "Jaga kerahasiaan alamat email saya" dan "Blokir dorongan baris perintah yang mengekspos email saya" di setelan email Anda .

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

Catatan: seperti yang dikomentari oleh orev di bawah , Git tidak mengungkapkan apa pun. GitHub , layanan hosting repositori Git , mungkin.
Tempat Anda mendorong repo Git lokal Anda dapat mengekspos metadata.


Catatan: Mulai 9 Agustus 2013, Anda sekarang dapat merahasiakan alamat email Anda !

Itu untuk operasi GitHub berbasis web: komit masih berisi alamat email, yang bisa atau tidak bisa sama dengan yang digunakan untuk akun GitHub Anda.
Lihat di bawah untuk "menutupi" email (git commit) itu juga.

Hingga saat ini, semua Aliran GitHub berbasis web menggunakan alamat email utama Anda. Ini termasuk membuat, mengedit, dan menghapus file, serta menggabungkan permintaan tarik.

Tapi sekarang Anda bisa merahasiakan alamat email Anda. Untuk melakukannya, kunjungi halaman pengaturan email Anda:

pengaturan email

Dengan ini diaktifkan, operasi berbasis web akan menggunakan alamat email [email protected].


Jika Anda ingin menyembunyikan email yang dibuat dari komputer Anda, GitHub sekarang memungkinkan Anda untuk mendaftarkan alamat email yang berbeda : lihat panduan ini .

Anda masih perlu mengkonfigurasi email (palsu) Anda di repo lokal Anda sebelum mendorong kembali ke GitHub, jika Anda ingin komitmen Anda mencerminkan

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

Kemudian:

  • Buka menu pengaturan Email
  • Klik "Tambahkan alamat email lain"
  • Masukkan email palsu (mis. " [email protected]") Dan klik "Tambah"

tambahkan alamat email baru

Perhatikan bahwa:

Pengaturan ini hanya mempengaruhi komitmen di masa mendatang .
Jika Anda ingin menghapus alamat email asli Anda dari riwayat komit repositori Anda, Anda harus menulis ulang komit lama Anda. Cara termudah untuk melakukannya adalah dengan:

Gunakan git filter-branchuntuk menulis ulang riwayat repositori dan Paksa-dorong riwayat baru ke atas.

VonC
sumber
1
Hal ini berguna untuk diketahui, namun menurut saya harus sangat jelas bahwa GitHub tidak sama a git. gitadalah tujuan umum, sumber terbuka, alat kontrol revisi, sedangkan GitHub adalah situs web yang memungkinkan Anda menerbitkan gitrepositori. GitHub tidak membuatnya git, mereka hanya kebetulan membuat situs web yang sangat bagus yang bekerja dengan baik dengannya.
orev
@ore ​​Poin yang bagus. Saya telah memasukkan peringatan itu dalam jawaban.
VonC
10

GitHub memiliki artikel bantuan yang disebut Menjaga kerahasiaan alamat email Anda , yang dimulai dengan:

Git mengharuskan Anda untuk mengidentifikasi diri Anda sendiri untuk membuat komitmen, tetapi Anda dapat menyembunyikan informasi kontak Anda dengan menggunakan alamat palsu. Git sendiri tidak peduli apakah email tersebut valid.

Sebaiknya Anda tahu: Meskipun Git tidak peduli, beberapa project mungkin tidak menerima kontribusi dari Anda jika komit Anda tidak memiliki alamat email yang valid, jadi Anda sebaiknya mempelajari kebijakan kontribusi project Anda sebelum mengikuti petunjuk ini.

GitHub tidak menerima banyak laporan tentang spam yang dikirim ke alamat email commit Git, tetapi jika Anda mengkhawatirkannya, panduan ini akan membantu Anda mengatasi masalah tersebut.

Panduan ini berisi langkah-langkah cara mengkonfigurasi Git dan GitHub untuk menggunakan alamat palsu.

Hugo
sumber
Saya mendapatkan banyak spam ke alamat email commit GitHub saya. Saya menggunakan yang khusus untuk itu.
Mitar
6

Ya, jawaban di atas benar ... kecuali Anda biasanya ingin memiliki alamat email yang sama untuk semua proyek Anda, maka Anda akan menggunakan perintah:

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

Anda juga dapat mengedit file .gitconfig di direktori home Anda, di bagian pengguna.

Anda dapat menentukan email yang berbeda untuk proyek tertentu dengan melakukan perintah yang sama tanpa opsi global.

Selain itu, saya sarankan Anda untuk mengaburkan email Anda jika kiriman dikirim ke area publik:

briancolfer(at)comcast.net

Sebagai contoh.

bcolfer
sumber
5

Jutaan email komit GitHub bocor

https://github.com/cirosantilli/all-github-commit-emails diekstrak dari Arsip GitHub https://www.githubarchive.org ekspor komit.

Arsip GitHub mendapatkan data dari API peristiwa GitHub: https://developer.github.com/v3/activity/events/types/#pushevent dan mengekspornya ke Google BigQuery setiap jam yang membuatnya lebih mudah untuk membuat kueri.

Email ditampilkan pada jenis acara PushEvent.

Saya tidak berpikir email komit muncul di mana pun di antarmuka web GitHub, jadi koleksi apa pun dibatasi oleh pembatasan kecepatan API. TODO: berapa banyak waktu untuk mengumpulkan 1 juta email melalui API dari awal.

Cara praktis untuk mendapatkan email komit seseorang dengan API

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

atau kunjungi: https://api.github.com/users/cirosantilli/events/public

Ada juga:

Struktur data komit Git memiliki bidang email penulis dan pelaku yang eksplisit

Ditampilkan di: Apa format file dari struktur data objek git commit?

Oleh karena itu jelas bahwa informasi ini ditambahkan ke komit secara default.

Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
sumber
4

Ya, alamat email Anda (sebagaimana ditentukan dalam git config user.email) akan terlihat di antarmuka web seperti GitWeb. Juga semua orang dapat mempelajari alamat email Anda dengan mengkloning repositori Anda meskipun ini mungkin masih jauh dari robot spam. Namun, tidak ada yang memaksa Anda untuk menggunakan alamat email asli. Git akan secara otomatis menyetel alamat email yang dibangun jika tidak ada yang diberikan. Di komputer saya tanpa user.emailitu menunjukkan komit oleh "Foo <foo @ daughter. (None)>".

Bombe
sumber
4

Anda dapat mengubah nama penulis, email, dll. WASPADALAH bahwa melakukan hal berikut dapat merusak riwayat Anda.

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

Diambil dari sini

kaki telur
sumber
4

GitHub memiliki bagian bantuan tentang mengatur alamat email Anda.

Secara khusus dikatakan:

Sebaiknya Anda tahu: Anda tidak perlu memberikan email yang valid. Jika Anda khawatir tentang spam, gunakan email palsu sebagai gantinya. [email protected] adalah praktik yang umum.

g_fred
sumber