GIT berkomitmen sebagai pengguna berbeda tanpa email / atau hanya email


127

Saya mencoba melakukan beberapa perubahan sebagai pengguna yang berbeda, tetapi saya tidak memiliki alamat email yang valid, perintah berikut tidak berfungsi untuk saya:

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

Saya memiliki masalah yang sama saat mencoba berkomitmen hanya dengan alamat email

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

Pada halaman manual GIT untuk perintah komit dikatakan saya dapat menggunakan

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

Untuk opsi --author.

Di manakah format ini ditentukan? apa kepanjangan dari A dan U? bagaimana saya berkomitmen untuk pengguna yang berbeda hanya dengan nama pengguna atau hanya email?


3
AU tidak berarti apa-apa, ini hanya contoh: AU Thor => AUThor => Penulis . Anda dapat menentukan apapun yang Anda inginkan sebagai nama.
Samy Dindane

1
Saya tahu bahwa AU Thor membentuk Penulis, saya bertanya-tanya apakah ada signifikansi dalam pemisahan tersebut.
Willem D'Haeseleer

Jawaban:


142

Format pengarang minimal yang diperlukan, seperti yang diisyaratkan dalam jawaban SO ini , adalah

Name <email>

Dalam kasus Anda, ini berarti Anda ingin menulis

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

Menurut komentar Willem D'Haeseleer, jika Anda tidak memiliki alamat email, Anda dapat menggunakan <>:

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

Seperti yang tertulis di git commithalaman manual yang Anda tautkan, jika Anda memberikan sesuatu yang kurang dari itu, itu digunakan sebagai token pencarian untuk mencari melalui komit sebelumnya, mencari komit lain oleh penulis itu.


28
Baru saja mengetahui bahwa jika Anda tidak memiliki alamat email, Anda juga dapat mengetik "nama <>", untuk mengosongkannya secara eksplisit alih-alih memasukkan palsu.
Willem D'Haeseleer

2
Jika Anda akan menggunakan "name <>", dan git commit --amendsetelahnya, itu akan gagal dengan invalid identkesalahan; jadi jangan
sanmai

7
Tampaknya bahkan saat menggunakan opsi itu, Anda masih perlu menyetel user.email dan user.name di konfigurasi git Anda, jika tidak git akan mengeluh.
qwertzguy

Bagaimana cara menambahkan file sebagai pengguna berbeda untuk komit pertama saya? Saya akan menggunakan perintah komit setelah itu.
MasterJoe

51

Format spesifiknya adalah:

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

1
Mengapa tidak memerlukan kata sandi John Doe jika Anda berkomitmen untuk namanya?
Narek

3
@Narek Apa itu dalam konteks ini?
pmr

37

Itu

format standar AU Thor <author@example.com>

Sepertinya didefinisikan sebagai berikut: (sejauh yang saya tahu, sama sekali tidak ada jaminan)

AU Thor = nama pengguna yang diperlukan

  • Pemisahan karakter mungkin menunjukkan bahwa spasi diperbolehkan, bisa juga menyerupai inisial.
  • Nama pengguna harus diikuti dengan 1 spasi, spasi tambahan akan dipotong

<author@example.com> = alamat email opsional

  • Harus selalu di antara tanda <>.
  • Format alamat email tidak divalidasi, Anda dapat memasukkan apa pun yang Anda inginkan
  • Opsional, Anda bisa menghilangkan ini secara eksplisit dengan menggunakan <>

Jika Anda tidak menggunakan sintaks yang tepat ini, git akan mencari melalui komit yang ada dan menggunakan komit pertama yang berisi string yang Anda berikan.

Contoh:

  1. Hanya nama pengguna

    Abaikan alamat email secara eksplisit:

    git commit --author="John Doe <>" -m "Impersonation is evil."
    
  2. Hanya email

    Secara teknis ini tidak mungkin. Namun Anda dapat memasukkan alamat email sebagai nama pengguna dan secara eksplisit menghilangkan alamat email. Sepertinya ini tidak terlalu berguna. Saya pikir akan lebih masuk akal untuk mengekstrak nama pengguna dari alamat email dan kemudian menggunakannya sebagai nama pengguna. Tetapi jika Anda harus:

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

Saya berlari ke ini ketika mencoba mengubah repositori dari mercurial menjadi git. Saya menguji perintah pada msysgit 1.7.10.


13

Hanya suplemen :

git commit --author = "john@doe.com" -m "Peniruan identitas itu jahat."

Dalam beberapa kasus, komit masih gagal dan menampilkan pesan berikut kepada Anda:

*** Tolong beritahu saya siapa Anda.

Lari

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

untuk menyetel identitas default akun Anda. Abaikan --global untuk menyetel identitas hanya dalam repositori ini.

fatal: tidak dapat mendeteksi alamat email secara otomatis (mendapat xxxx)

Jadi jalankan saja "git config", lalu "git commit"


Inilah yang saya butuhkan. Saya memiliki nama pengguna dan email terpisah untuk GitHub perusahaan dan GitHub publik. Saya perlu mengatur repo saya saat ini untuk menggunakan nama pengguna dan email GitHub publik saya sehingga saya dapat melakukan perubahan tanpa mengekspos email pribadi.
TBirkulosis

8

Format

A U Thor <author@example.com>

hanya berarti Anda harus menentukan

FirstName MiddleName LastName <email@example.com>

Sepertinya nama tengah dan belakang adalah opsional (mungkin bagian sebelum email tidak memiliki format yang ketat sama sekali). Coba, misalnya, ini:

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

Seperti yang dikatakan dokumen:

  --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.

jika Anda tidak menggunakan format ini, git memperlakukan string yang disediakan sebagai pola dan mencoba menemukan nama yang cocok di antara penulis commit lain.


Tidak ada yang namanya FirstName MiddleName LastName . Lihat ini .
Samy Dindane

3

The --authorpilihan tidak bekerja:

*** Please tell me who you are.

Run

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

Ini melakukan:

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

Ini adalah satu-satunya yang berhasil untuk saya. Perhatikan urutan itu penting. git commit -c user.name="j bloggs" -am "message"memberikan kesalahanfatal: Option -m cannot be combined with -c/-C/-F
Martin

2

Buka Git Bash.

Setel nama pengguna Git:

$ git config --global user.name "name family" Konfirmasikan bahwa Anda telah menyetel nama pengguna Git dengan benar:

$ git config --global user.name

nama keluarga

Setel email Git:

$ git config --global user.email email@foo.com Konfirmasikan bahwa Anda telah menyetel email Git dengan benar:

$ git config --global user.email

email@foo.com


0

Itu semua tergantung pada bagaimana Anda berkomitmen.

Sebagai contoh:

git commit -am "Some message"

akan menggunakan ~\.gitconfignama pengguna Anda . Dengan kata lain, jika Anda membuka file itu, Anda akan melihat baris seperti ini:

[user]
    email = someemail@gmail.com

Itu akan menjadi email yang ingin Anda ubah. Jika Anda melakukan permintaan tarik melalui Bitbucket atau Github dll. Anda akan menjadi siapa pun yang Anda masuki.


0

Sebuah alternatif jika kekhawatiran adalah untuk menyembunyikan alamat email yang sesungguhnya ... Jika Anda berkomitmen untuk Github Anda tidak perlu email yang sebenarnya Anda dapat menggunakan<username>@users.noreply.github.com

Terlepas dari menggunakan Github atau tidak, Anda mungkin pertama-tama ingin mengubah detail pelaku Anda (pada penggunaan windows SET GIT_...)

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

Kemudian atur penulisnya

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

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


Tidak seperti semua solusi lainnya, ini berfungsi ketika Anda belum menginisialisasi user.email/user.name pada awalnya.
Andy

-2

Jalankan dua perintah ini dari terminal untuk mengatur Email dan Nama Pengguna

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

 git config --global user.name "your name" 
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.