Git: "tolong beri tahu saya siapa Anda" kesalahan

227

Saya memiliki server aplikasi yang saya bootstrap bersama menggunakan Chef + beberapa skrip bash ad-hoc. Masalahnya adalah, ketika saya ingin menjalankan pembaruan di salah satu server aplikasi ini, saya mendapatkan:

19:00:28: *** Please tell me who you are.

Run

  git config --global user.email "[email protected]"
  git config --global user.name "Your Name"

Apakah saya benar-benar perlu mengatur ini untuk melakukan yang sederhana git pull origin mastersetiap kali saya memperbarui server aplikasi? Apakah ada cara lain untuk mengabaikan perilaku ini sehingga tidak salah saat nama dan email tidak disetel?

Randand
sumber
3
Dari apa yang saya temui tidak, tapi sekali lagi saya melihat tidak ada masalah dengan hanya menambahkan nama dan email Anda bahkan jika mereka hanya nama dan email palsu.
sean
10
Ya, Anda harus mengatur ini, jika "sederhana" git pullakan membuat komit, karena itu menggabungkan, misalnya.
fork0
1
Anda menggambarkan skenario penyebaran satu arah. Saya tidak akan menambahkan kredensial untuk menghindari komitmen automerging. Ya, Anda akan melihat masalah dengan kesalahan ini, tetapi ini berarti bahwa seseorang sedang mencari-cari produksi dan mengubah file secara manual memicu penggabungan.
Alex Skrypnyk

Jawaban:

249

Saya menghabiskan banyak waktu ketika saya memanggil skrip php untuk init dan melakukan git. Dan saya menemukan alur kerja harus:

1.git init
2.git config user.name "someone"
3.git config user.email "[email protected]"
4.git add *
5.git commit -m "some init msg"

Jika Anda bertukar [23] dan 1, konfigurasi tidak akan berfungsi sama sekali.

Berharap ini akan membantu.

luxuia
sumber
Ini adalah praktik yang benar untuk memulai repositori git. Tetapi untuk memperbarui solusi repo @gfxmonk lebih baik
Davisein
Bisakah Anda menjelaskan bagaimana cara kerjanya dan mengapa itu memberikan kesalahan sebelum melakukan ini?
Chinmaya B
1
Anda dapat menambahkan --globalberalih ke git configperintah, dan melakukannya sekali untuk akun OS Anda. Setelah itu langkah 2-3 tidak diperlukan.
x-yuri
50

Alih-alih melakukan git pull, Anda dapat melakukan:

git fetch
git reset --hard origin/master

Tidak satu pun dari mereka yang mengharuskan Anda untuk mengkonfigurasi nama pengguna / email git Anda.

Ini akan menghancurkan perubahan / komitmen lokal yang tidak dikomit, dan akan membuat KEPALA Anda menunjuk ke sebuah komit (bukan cabang). Tapi tak satu pun dari itu seharusnya menjadi masalah bagi server aplikasi karena Anda tidak boleh membuat perubahan lokal atau melakukan repositori itu.

gfxmonk
sumber
Automerge dari git pull berbahaya dalam situasi ini, lebih baik melakukan reset.
Davisein
Bukankah itu lebih baik untuk digunakan git fetch && git reset --hard HEAD?
jacoor
@ jacoor nggak: git reset --hard HEADhanya membuang perubahan yang tidak dikomit, tidak mengubah komit apa yang menjadi dasar ruang kerja Anda (karena menurut definisi Anda sudah menggunakan HEAD)
gfxmonk
33

Jika Anda menggunakan sourcetree: Repository -> Pengaturan Repository -> Advanced -> hapus centang kotak "Gunakan pengaturan pengguna global"

bekerja sangat baik untuk saya.

DoronK
sumber
dalam kasus saya, saya harus memeriksanya kembali, tetapi toh! Terima kasih atas bantuan Anda
Karoly
32

ini berfungsi untuk saya, coba ini .. Anda perlu mengkonfigurasi terminal Anda dengan akses jarak jauh.

     git config --global user.name "abc"
     git config --global user.email "[email protected]"
Kuldeep Singh
sumber
10

Perbarui proses bootstrap Anda untuk membuatnya ${HOME}/.gitconfigdengan konten yang tepat, atau menyalin yang sudah ada dari suatu tempat.

Twalberg
sumber
9
git config user.email "insert github email here"
git config user.name "insert github real name here"

Ini bekerja baik untuk saya.

MrRobot4.0
sumber
4

Masalah yang sama terjadi pada saya dan mengatasinya dengan menambahkan nama default dan Pengaturan Repositori email.

Seperti yang disarankan Doron -

Jika Anda menggunakan sourcetree: Repository -> Pengaturan Repository -> Advanced -> hapus centang pada kotak "Use global user settings".

Tambahkan nama dan alamat email default.

Rahul
sumber
4

Dalam kasus saya, saya tidak memiliki "e" pada kata "email" seperti yang dinyatakan Chad di atas, tetapi saya melihat tidak demikian halnya dengan Anda. Silakan tekan perintah berikut untuk melihat apakah semuanya menarik seperti yang diharapkan.

git config -l
Mo-Gang
sumber
4

Anda harus Menulis email Anda seperti itu

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

Lalu: Tulis Nama Pengguna

 git config --global user.name "Your Name"

Setelah itu jendela Poupup akan muncul

Tulis USERNAME & EMAIL Untuk Acount yang ingin Anda berkontribusi

Abu Bakar
sumber
3

Bagi saya masalahnya adalah koneksi jaringan, setelah saya menghubungkan kembali ke wifi saya, itu bisa mengambil detail dan melakukan tanpa masalah.

Sharukh Mastan
sumber
2

Apakah saya benar-benar perlu mengatur ini untuk melakukan master asal git pull sederhana setiap kali saya memperbarui server aplikasi? Apakah ada cara lain untuk mengabaikan perilaku ini sehingga tidak salah saat nama dan email tidak disetel?

Ini akan bertanya sekali saja dan memastikan bahwa kunci publik rsa untuk mesin ini ditambahkan ke akun github Anda yang Anda coba komit atau melewati permintaan tarik.

Informasi lebih lanjut tentang ini dapat ditemukan: Di sini

Mansab Uppal
sumber
1
Tautan rusak
Alice Schwarze
2

Saya memiliki ini sebagai pesan kesalahan yang salah:
git pullberfungsi dengan baik pada baris cmd
git pullgagal dalam proses Perl CGI (webhook untuk auto-deploy dari github) dengan kesalahan di atas.

Melakukan git statusidentifikasi file bentrok. Mengurutkannya memperbaiki masalah.

Masalah terulang kembali nanti ketika saya mengubah beberapa pengaturan konfigurasi.

Kali ini, menyetel $ HOME dan $ USER env vars memperbaikinya (tidak disetel secara default dalam proses CGI)

Andrew Murphy
sumber
2

Lihatlah file konfigurasi.

Repositori> Pengaturan Repositori> Edit file konfigurasi.

Periksa apakah [user]ada bagian. Jika bagian pengguna tidak ada, tambahkan.

Contoh:

[user]
name = "your name"
email = "your email"
Aman Srivastava
sumber
2

saya menggunakan heroku cli 1. harus menggunakan semua nama pengguna dan email pengguna

$ git config --global user.email email .login.

$ git config --global user.name nama .heroku.

  1. git pull [git url]
  2. git init
  3. git add *

    5 git commit -m "setelah mengkonfigurasi user.name, email pengguna"

  4. git dorong master heroku

linepro
sumber
2

Saya menggunakan Jenkins dan mengalami masalah ini ketika mencoba melakukan rilis (yang membutuhkan git commit). Untuk memperbaiki masalah ini, saya perlu menambahkan nama pengguna / alamat email kustom (lihat gambar) Nama pengguna / alamat email kustomini memastikan bahwa ketika kode itu diperiksa itu menggunakan nama pengguna saya / alamat email saat melakukan rilis. Catatan, konfigurasi ini tersedia dari konfigurasi proyek Jenkins Multibranch Pipeline.

Craig
sumber
2

git pullseharusnya tidak memerlukan ini. Namun jika tarikan menyebabkan konflik gabungan, maka tampaknya perlu.

Kjeld Flarup
sumber
2

IMHO, cara yang tepat untuk mengatasi kesalahan ini adalah mengkonfigurasi file konfigurasi git global Anda.

Untuk melakukannya jalankan perintah berikut: git config --global -e

Editor akan muncul di mana Anda dapat memasukkan konfigurasi default git Anda.

Inilah beberapa:

[user]
    name = your_username
    email = [email protected] 
[alias]
    # BASIC
    st = status
    ci = commit
    br = branch
    co = checkout
    df = diff

Untuk detail lebih lanjut, lihat Menyesuaikan Konfigurasi Git - Git

Ketika Anda melihat perintah seperti, git config...

$ git config --global core.whitespace \
    trailing-space,space-before-tab,indent-with-non-tab

... Anda dapat memasukkannya ke file konfigurasi git global Anda sebagai:

[core]
   whitespace = space-before-tab,-indent-with-non-tab,trailing-space

Untuk sekali konfigurasi, Anda dapat menggunakan sesuatu seperti git config --global user.name 'your_username'

Jika Anda tidak mengatur konfigurasi git Anda secara global, Anda harus melakukannya untuk setiap repo git yang bekerja dengan Anda secara lokal.

Pengaturan user.name dan user.email memberi tahu git siapa Anda, sehingga git commitperintah selanjutnya tidak akan mengeluh,*** Please tell me who you are.

Sering kali, perintah git menyarankan Anda menjalankan bukan apa yang harus Anda jalankan. Kali ini, perintah yang disarankan tidak buruk:

$ git commit -m 'first commit'

*** Please tell me who you are.

Run

  git config --global user.email "[email protected]"
  git config --global user.name "Your Name"

Kiat: Sampai saya terbiasa dengan git, membuat cadangan file proyek saya - sebelum menjalankan perintah git yang disarankan dan menjelajahi hal-hal yang saya pikir akan berhasil - menyimpan bacon saya di lebih dari beberapa kali.

l3x
sumber
2

Tidak dapat mendeteksi alamat email secara otomatis.

Secara default dibutuhkan seperti nama pengguna sistem Anda [email protected].

Jadi, Anda perlu mengatur email Anda seperti di bawah ini:

git config user.email "[email protected]"

Setelah mengatur email Anda dapat menjalankan perintah git dan melakukan perubahan Anda.

  1. git init
  2. git add *
  3. git commit -m "some init msg"
AMIT SAMOTA
sumber
1

Saya mengalami pesan kesalahan ini ketika mencoba melakukan beberapa file.

Cukup menjalankan git fetchlalu mencoba komit saya lagi bekerja untuk saya.

bergie3000
sumber
0

Untuk memperbaikinya saya menggunakan: git config --global user.email "[email protected]" dan berfungsi.

user.mail tidak ada pekerjaan, perlu menempatkan E. Typo mungkin?

Victor Hugo Nogueira dWolf
sumber
Saya pikir OP ingin tahu apakah ini benar-benar diperlukan untuk setiap pembaruan.
tbrk
-5

Itu salah ketik. Anda secara tidak sengaja mengatur "user.mail" tanpa " e ". Memperbaikinya dengan menetapkan "pengguna. E mail" dalam konfigurasi global dengan

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

Temukan solusinya di sini

https://stackoverflow.com/a/14662703

Girish Joshi
sumber
3
Di mana Anda melihat "'user.mail' tanpa 'e'" di halaman ini?
Chad Nouis