GIT, e-posta / veya yalnızca e-posta olmadan farklı bir kullanıcı olarak taahhüt eder


127

Farklı bir kullanıcı olarak bazı değişiklikler yapmaya çalışıyorum, ancak geçerli bir e-posta adresim yok, aşağıdaki komut benim için çalışmıyor:

git commit --author="john doe" -m "some fix"
fatal: No existing author found with 'john doe'

Sadece bir e-posta adresiyle işlem yapmaya çalışırken aynı sorunu yaşıyorum

git commit --author="john@doe.com" -m "some fix"
fatal: No existing author found with 'john@doe.com'

Commit komutu için GIT man sayfalarında,

standard A U Thor <author@example.com> format

--Author seçeneği için.

Bu format nerede tanımlanır? A ve U ne anlama geliyor? sadece bir kullanıcı adı veya sadece bir e-posta ile farklı bir kullanıcıya nasıl taahhütte bulunabilirim?


3
AU hiçbir şeyi ifade etmez, sadece bir örnektir: AU Thor => AUThor => Yazar . İstediğiniz herhangi bir şeyi isim olarak belirtebilirsiniz.
Samy Dindane

1
AU Thor'un Yazar'ı oluşturduğunu biliyorum, ayrılığın herhangi bir önemi olup olmadığını merak ediyordum.
Willem D'Haeseleer

Yanıtlar:


142

Bu SO cevabında ima edildiği gibi, gereken minimum yazar biçimi şudur:

Name <email>

Senin durumunda, bu yazmak istediğin anlamına gelir

git commit --author="Name <email>" -m "whatever"

Willem D'Haeseleer'in yorumuna göre, e-posta adresiniz yoksa şunları kullanabilirsiniz <>:

git commit --author="Name <>" -m "whatever"

Bağlandığınız git commitman sayfasında yazıldığı gibi , bundan daha azını sağlarsanız, o yazarın diğer taahhütlerini aramak için önceki taahhütleri aramak için bir arama jetonu olarak kullanılır.


28
Bir e-posta adresiniz yoksa sahte girmek yerine açıkça boş bırakmak için sadece "ad <>" yazabileceğinizi öğrendim.
Willem D'Haeseleer

2
Eğer kullanırsanız "name <>"ve git commit --amendsonrasında invalid identhata vererek başarısız olur ; bu yüzden yapma
sanmai

7
Görünüşe göre bu seçeneği kullanırken bile git config'inizde user.email ve user.name'yi ayarlamanız gerekiyor, aksi takdirde git şikayet edersiniz.
qwertzguy

İlk kaydetmem için bir dosyayı farklı bir kullanıcı olarak nasıl eklerim? Bundan sonra commit komutunu kullanacağım.
MasterJoe

51

Spesifik format şu şekildedir:

git commit --author="John Doe <john@doe.com>" -m "Impersonation is evil." 

1
Adını taahhüt ediyorsanız neden John Doe şifresini gerektirmiyor?
Narek

3
@Narek Bu bağlamda bu ne olurdu?
pmr

37

standart AU Thor <yazar@example.com> biçimi

Aşağıdaki gibi tanımlanmış görünüyor: (bildiğim kadarıyla, kesinlikle garanti olmaksızın)

AU Thor = gerekli kullanıcı adı

  • Karakterlerin ayrılması muhtemelen boşluklara izin verildiğini gösterir, aynı zamanda baş harflerine benziyor olabilir.
  • Kullanıcı adının ardından 1 boşluk gelmelidir, fazladan boşluklar kesilecektir

<yazar@example.com> = isteğe bağlı e-posta adresi

  • Her zaman <> işaretleri arasında olmalıdır.
  • E-posta adresi formatı doğrulanmadı, hemen hemen ne istersen girebilirsin
  • İsteğe bağlı olarak, <> kullanarak bunu açıkça atlayabilirsiniz.

Tam olarak bu sözdizimini kullanmazsanız, git mevcut commit'leri arayacak ve sizin sağladığınız dizgeyi içeren ilk commit'i kullanacaktır.

Örnekler:

  1. Sadece kullanıcı adı

    E-posta adresini açıkça atlayın:

    git commit --author="John Doe <>" -m "Impersonation is evil."
    
  2. Yalnızca e-posta

    Teknik olarak bu mümkün değil. Bununla birlikte, kullanıcı adı olarak e-posta adresini girebilir ve e-posta adresini açıkça atlayabilirsiniz. Bu pek kullanışlı görünmüyor. Kullanıcı adını e-posta adresinden çıkarmanın ve ardından bunu kullanıcı adı olarak kullanmanın daha da mantıklı olacağını düşünüyorum. Ama mecbur kalırsan:

    git commit --author="john@doe.com <>" -m "Impersonation is evil." 
    

Bir depoyu mercurial'den git'e dönüştürmeye çalışırken buna koştum. Komutları msysgit 1.7.10'da test ettim.


13

Sadece ek :

git commit --author = "john@doe.com" -m "Kimliğe bürünme kötüdür."

Bazı durumlarda işleme yine de başarısız olur ve size aşağıdaki mesajı gösterir:

*** Lütfen bana kim olduğunu söyle.

Çalıştırmak

git config --global user.email "siz@example.com" git config --global user.name "Adınız"

hesabınızın varsayılan kimliğini ayarlamak için. Kimliği yalnızca bu depoda ayarlamak için --global'ı atlayın.

önemli: e-posta adresi otomatik olarak tespit edilemiyor (xxxx var)

Yani sadece "git config" ve ardından "git commit" komutunu çalıştırın


İhtiyacım olan şey bu. Kurumsal bir GitHub ve genel GitHub için ayrı kullanıcı adım ve e-postam var. Mevcut depomu genel GitHub kullanıcı adımı ve e-postamı kullanacak şekilde ayarlamam gerekiyordu, böylece özel bir e-postayı ifşa etmeden değişikliklerimi zorlayabildim.
TBirkulosis

8

Biçim

A U Thor <author@example.com>

basitçe belirtmeniz gerektiği anlamına gelir

FirstName MiddleName LastName <email@example.com>

Görünüşe göre ikinci isim ve soyadlar isteğe bağlıdır (belki e-postadan önceki kısım hiç katı bir biçime sahip değildir). Örneğin şunu deneyin:

git commit --author="John <john@doe.com>" -m "some fix"

Dokümanların dediği gibi:

  --author=<author>
       Override the commit author. Specify an explicit author using the standard 
       A U Thor <author@example.com> format. Otherwise <author> is assumed to 
       be a pattern and is used to search for an existing commit by that author 
       (i.e. rev-list --all -i --author=<author>); the commit author is then copied 
       from the first such commit found.

bu biçimi kullanmazsanız, git sağlanan dizgeyi bir kalıp olarak ele alır ve diğer işlemlerin yazarları arasında eşleşen isimleri bulmaya çalışır.


FirstName MiddleName LastName diye bir şey yoktur . Bunu gör .
Samy Dindane

3

--authorSeçeneği çalışmıyor:

*** Please tell me who you are.

Run

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

Bu yapar:

git -c user.name='A U Thor' -c user.email=author@example.com commit

Bu benim için çalışan tek kişi. Sıranın önemli olduğunu unutmayın. git commit -c user.name="j bloggs" -am "message"hata veriyorfatal: Option -m cannot be combined with -c/-C/-F
Martin

2

Git Bash'i açın.

Git kullanıcı adı belirleyin:

$ git config --global user.name "name family" Git kullanıcı adını doğru ayarladığınızı onaylayın:

$ git config --global user.name

isim ailesi

Git e-postası ayarlayın:

$ git config --global user.email email@foo.com Git e-postasını doğru ayarladığınızı onaylayın:

$ git config --global user.email

email@foo.com


0

Her şey nasıl taahhüt ettiğinize bağlıdır.

Örneğin:

git commit -am "Some message"

~\.gitconfigkullanıcı adınızı kullanacak . Başka bir deyişle, o dosyayı açarsanız, şuna benzeyen bir satır görmelisiniz:

[user]
    email = someemail@gmail.com

Değiştirmek istediğiniz e-posta bu olacaktır. Bitbucket veya Github vb. Aracılığıyla bir çekme isteği yapıyorsanız, oturum açtığınız kişi siz olursunuz.


0

Bir alternatifEndişeniz gerçek e-posta adresini gizlemekse ... Github'a taahhüt veriyorsanız, kullanabileceğiniz gerçek bir e-postaya ihtiyacınız yok<username>@users.noreply.github.com

Ne olursa olsun Github veya olmasın kullanmak yerine, muhtemelen öncelikle değiştirmek istediğiniz committer (windows kullanımı hakkında ayrıntılar SET GIT_...)

GIT_COMMITTER_NAME='username' 
GIT_COMMITTER_EMAIL='username@users.noreply.github.com'

Sonra yazarı ayarlayın

git commit --author="username <username@users.noreply.github.com>"

https://help.github.com/articles/keeping-your-email-address-private


Diğer tüm çözümlerin aksine, bu başlangıçta user.email/user.name başlatmadığınızda çalışır.
Andy

-2

Kullanıcı e-postası ve Adı ayarlamak için bu iki komutu terminalden çalıştırın.

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

 git config --global user.name "your name" 
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.