Git: “lütfen bana kim olduğunu söyle” hatası


227

Chef + bazı ad-hoc bash komut dosyalarını kullanarak birlikte bootstrap uygulama sunucularım var. Sorun, bu uygulama sunucularından birinde bir güncelleştirme çalıştırmak istediğimde:

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

Run

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

git pull origin masterBir uygulama sunucusunu her güncellediğimde bunu basit bir işlem için ayarlamam gerekir mi? Ad ve e-posta ayarlanmadığında hata vermemek için bu davranışı geçersiz kılmak için yine de var mı?


3
Karşılaştığım şeyden hayır, ama sonra sadece sahte adlar ve e-postalar olsalar bile adınızı ve e-postalarınızı eklemeyle ilgili hiçbir sorun görmüyorum.
sean

10
Evet, "basit" git pullbir taahhüt oluşturacaksa bunları ayarlamanız gerekir , çünkü örneğin bir birleştirme yaptı.
fork0

1
Tek yönlü dağıtım senaryosunu tanımlarsınız. Herhangi bir otomatik taahhütten kaçınmak için kimlik bilgilerini eklemem. Evet, bu hatayla ilgili sorunu göreceksiniz, ancak bu, birinin üretim etrafında dolaştığı ve birleştirmeyi manuel olarak tetikleyen dosyaları değiştirdiği anlamına gelir.
Alex Skrypnyk

Yanıtlar:


250

Ben init ve taahhüt git php betiği çağırdığınızda saatlerce harcamak. Ve i bulundu iş akışı olmalıdır:

1.git init
2.git config user.name "someone"
3.git config user.email "someone@someplace.com"
4.git add *
5.git commit -m "some init msg"

[23] ve 1'i değiştirirseniz, yapılandırma hiç çalışmaz.

Bunun biraz yardım etmesini diliyorum.


Git deposunu başlatmak için doğru uygulama budur. Ancak bir repo @gfxmonk çözümünü güncellemek daha iyidir
Davisein

Nasıl çalıştığını ve bunu yapmadan önce neden hata verdiğini açıklayabilir misiniz?
Chinmaya B

1
Komutlara --globalgeçiş ekleyebilir git configve bunu OS hesabınız için bir kez yapabilirsiniz. Bundan sonra 2-3. Adımlara gerek yoktur.
x-yuri

50

Bir yapmak yerine git pullşunları yapabilirsiniz:

git fetch
git reset --hard origin/master

Bunların hiçbiri git kullanıcı adınızı / e-postanızı yapılandırmanızı gerektirmez.

Bu, taahhüt edilmemiş tüm yerel değişiklikleri / taahhütleri yok eder ve HEAD'inizi bir taahhüdü (bir şubeyi değil) işaret edecek şekilde bırakır. Ancak bunların hiçbiri bir uygulama sunucusu için sorun oluşturmamalı çünkü yerel değişiklikler yapmamalı veya bu depoya bağlı kalmamalısınız.


Git çekme otomasyonu bu durumda tehlikelidir, sıfırlama yapmak daha iyidir.
Davisein

Kullanmak daha iyi olmaz mıydı git fetch && git reset --hard HEAD?
jacoor

@jacoor nope: git reset --hard HEADsadece izinsiz değişikliklerinizi atar, çalışma alanınızın bağlı olduğu şeyi değiştirmez (tanım gereği zaten HEAD'de olduğunuzdan)
gfxmonk

33

Sourcetree kullanıyorsanız: Depo -> Depo Ayarları -> Gelişmiş -> "Genel kullanıcı ayarlarını kullan" kutusunun işaretini kaldırın

benim için harika çalıştı.


benim durumumda, tekrar kontrol etmek zorunda kaldı, ama yine de! Yardımınız için teşekkürler
Karoly

32

benim için çalışıyor, bu deneyin .. terminalinizi uzaktan erişim ile yapılandırmanız gerekir.

     git config --global user.name "abc"
     git config --global user.email "abc@example.com"

10

${HOME}/.gitconfigUygun içeriğe sahip bir oluşturmak veya varolan bir dosyayı bir yerden kopyalamak için önyükleme işleminizi güncelleyin .


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

Bu benim için harika çalıştı.


4

Aynı sorun benimle oldu ve varsayılan ad ve e-posta Depo Ayarları ekleyerek çözüldü.

Doron'un önerdiği gibi -

Sourcetree kullanıyorsanız: Depo -> Depo Ayarları -> Gelişmiş -> "Genel kullanıcı ayarlarını kullan" kutusunun işaretini kaldırın.

Varsayılan adı ve e-posta adresini ekleyin.


4

Benim durumumda, Çad'ın yukarıda belirttiği gibi "e-posta" kelimesinde "e" eksikti ama senin için durum böyle değil. Her şeyin beklendiği gibi çekilip çekilmediğini görmek için lütfen aşağıdaki komutu tıklayın.

git config -l

4

E-postanızı böyle yazmalısınız

 git config --global user.email "you@example.com"

Sonra: Kullanıcı Adını Yaz

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

O Poupup penceresinden sonra görünecektir

USERNAME & EMAIL yaz İstediğiniz Acount için katkıda bulunun


3

Benim için sorun ağ bağlantısı, benim wifi yeniden bağlandıktan sonra, ayrıntıları almak ve herhangi bir sorun olmadan taahhüt olabilir.


2

Bir uygulama sunucusunu her güncellediğimde bunu basit bir git pull origin master yapmak için ayarlamam gerekir mi? Ad ve e-posta ayarlanmadığında hata vermemek için bu davranışı geçersiz kılmak için yine de var mı?

Sadece bir kez soracak ve bu makine için rsa genel anahtarının, taahhütte bulunmaya veya bir çekme isteği iletmeye çalıştığınız github hesabınıza eklendiğinden emin olun.

Bu konuda daha fazla bilgi bulabilirsiniz: Burada


1
Bağlantı koptu
Alice Schwarze

2

Hatalı bir hata mesajı olarak bu vardı:
git pullcmd satırında iyi çalıştı
git pullPerl CGI işlemi (github otomatik dağıtmak için bir webhook) yukarıdaki hata ile başarısız oldu.

Bir yaparak git statustespit edilen bir çatışan dosyası. Bunu sıralamak sorunu çözdü.

Bazı yapılandırma ayarlarını değiştirdiğimde sorun tekrar ortaya çıktı.

Bu sefer $ HOME ve $ USER env ayarı bunu değiştirdi (CGI işleminde varsayılan olarak ayarlanmamış)


2

Yapılandırma dosyasına bir göz atın.

Depo> Depo Ayarları> Yapılandırma dosyasını düzenle.

[user]Bölümün mevcut olup olmadığını kontrol edin . Kullanıcı bölümü eksikse ekleyin.

Misal:

[user]
name = "your name"
email = "your email"

2

Ben heroku cli 1 kullanıyorum. tüm kullanıcı adı ve kullanıcı e-posta kullanmalısınız

$ git config - küresel user.email .login e-posta.

$ git config - küresel kullanıcı.adı .kahraman adı.

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

    5 git commit -m "config user.name, user email" den sonra

  4. git push heroku ustası


2

Jenkins kullanmak ve bir sürüm (çalışırken bir kesinleştirme gerektirir) gerçekleştirmeye çalışırken bu sorunla karşılaştım. Sorunları düzeltmek için, bir Özel kullanıcı adı / e-posta adresi eklemem gerekiyordu (resme bakın) Özel kullanıcı adı / e-posta adresiBu, kod teslim alındığında, sürümü gerçekleştirirken yapı kullanıcı adımı / e-posta adresini kullanmasını sağladı. Bu yapılandırmanın Jenkins Multibranch Boru Hattı proje yapılandırmasında kullanılabileceğini unutmayın.


2

git pullbunu gerektirmemelidir. Ancak, çekiş birleşme çatışmasına neden oluyorsa, gereksiz görünüyor.


2

IMHO, bu hatayı çözmenin doğru yolu global git config dosyanızı yapılandırmaktır.

Bunu yapmak için aşağıdaki komutu çalıştırın: git config --global -e

Varsayılan git yapılandırmalarınızı ekleyebileceğiniz bir düzenleyici görünecektir.

İşte bunlardan birkaçı:

[user]
    name = your_username
    email = your_username@users.noreply.github.com 
[alias]
    # BASIC
    st = status
    ci = commit
    br = branch
    co = checkout
    df = diff

Daha fazla ayrıntı için bkz. Git - Git Yapılandırmasını Özelleştirme

Şöyle bir komut gördüğünüzde, git config...

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

... global git config dosyanıza şu şekilde koyabilirsiniz:

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

Bir defaya mahsus konfigürasyonlar için, git config --global user.name 'your_username'

Git yapılandırmalarınızı global olarak ayarlamazsanız, yerel olarak çalıştığınız her git repo için bunu yapmanız gerekir.

User.name ve user.email ayarları git'e kim olduğunuzu söyler, bu nedenle sonraki git commitkomutlar şikayet etmez,*** Please tell me who you are.

Git komutunu çalıştırmanızı öneren komutlar çoğu zaman çalıştırmanız gerekenler değildir. Bu kez önerilen komutlar kötü değil:

$ git commit -m 'first commit'

*** Please tell me who you are.

Run

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

İpucu: Git'e çok aşina olana kadar, proje dosyamın bir yedeklemesini yapana kadar - önerilen git komutlarını çalıştırmadan ve işe yarayacağını düşündüğüm şeyleri keşfetmeden önce - pastırmamı birkaç kereden fazla kurtardım.


2

E-posta adresini otomatik olarak algılayamıyor.

Varsayılan olarak sistem kullanıcı adınızı alır abc@xyz.none.

Bu nedenle e-postanızı aşağıdaki gibi ayarlamanız gerekir:

git config user.email "someone@gmail.com"

E-postayı ayarladıktan sonra git komutlarını çalıştırabilir ve değişikliklerinizi yapabilirsiniz.

  1. git init
  2. git ekle *
  3. git commit -m "bazı init msj"

1

Bazı dosyaları işlemeye çalışırken bu hata iletisiyle karşılaştım.

Sadece koşmak git fetchsonra benim taahhüt denemek benim için çalıştı.


0

Düzeltmek için şunu kullan: git config --global user.email "you@example.com" ve çalışıyor.

user.mail iş yok, belki bir E. Typo koymak gerekir?


Bence OP bunun her güncelleme için gerçekten gerekli olup olmadığını bilmek istiyor.
tbrk

-5

Bu bir yazım hatası. Yanlışlıkla " e " olmadan "user.mail" ayarladınız . Genel yapılandırmada "kullanıcı. E- posta"

git config --global user.email "siz@example.com"

Burada çözüm bulundu

https://stackoverflow.com/a/14662703


3
Bu sayfada "e" içermeyen "'user.mail" ifadesini nerede görüyorsunuz?
Chad Nouis
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.