जीआईटी बिना ईमेल / केवल ईमेल के विभिन्न उपयोगकर्ता के रूप में प्रतिबद्ध है


127

मैं एक अलग उपयोगकर्ता के रूप में कुछ बदलाव करने की कोशिश कर रहा हूं, लेकिन मेरे पास एक मान्य ईमेल पता नहीं है, निम्नलिखित कमांड मेरे लिए काम नहीं कर रहा है:

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

मुझे एक ही समस्या है जब केवल एक ईमेल पते के साथ कमिट करने की कोशिश की जा रही है

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

जीआईटी मैन पेज पर कमेंट कमांड के लिए यह कहता है कि मैं इसका उपयोग कर सकता हूं

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

के लिए - विकल्प विकल्प।

यह प्रारूप कहां परिभाषित किया गया है? A और U किस लिए खड़े होते हैं? मैं केवल एक उपयोगकर्ता नाम या केवल एक ईमेल के साथ एक अलग उपयोगकर्ता के लिए कैसे करूं?


3
एयू किसी भी चीज के लिए खड़ा नहीं होता है, यह सिर्फ एक उदाहरण है: एयू थोर => ऑटोोर => लेखक । आप एक नाम के रूप में कुछ भी निर्दिष्ट कर सकते हैं।
सामी डिंडाने

1
मुझे पता है कि एयू थोर लेखक बनते हैं, मैं सोच रहा था कि क्या अलगाव में कोई महत्व था।
विलेम डी'हैसेलेर

जवाबों:


142

इस एसओ उत्तर में संकेत के रूप में न्यूनतम आवश्यक लेखक प्रारूप है

Name <email>

आपके मामले में, इसका मतलब है कि आप लिखना चाहते हैं

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

यदि आपको कोई ईमेल पता नहीं है, तो आप विलेम डी'हैसेलेर की टिप्पणी का उपयोग कर सकते हैं <>:

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

जैसा कि आपके द्वारा लिंक किए गए git commitमैन पेज पर लिखा गया है, यदि आप इससे कम कुछ भी आपूर्ति करते हैं, तो इसका उपयोग पिछले लेखक के माध्यम से खोज करने के लिए एक खोज टोकन के रूप में किया जाता है, उस लेखक द्वारा अन्य कॉमेट्स की तलाश में।


28
बस पता चला कि यदि आपके पास कोई ईमेल पता नहीं है, तो आप केवल "नाम <>" टाइप कर सकते हैं, स्पष्ट रूप से फर्जी दर्ज करने के बजाय इसे खाली छोड़ सकते हैं।
विलेम डी'हैसेलेर

2
यदि आप उपयोग करेंगे "name <>", और git commit --amendबाद में, यह invalid identत्रुटि के साथ विफल होगा ; तो बस मत करो
sanmai

7
उस विकल्प का उपयोग करते समय भी, आपको अभी भी अपने git config में user.email और user.name सेट करने की आवश्यकता है, अन्यथा git शिकायत करता है।
qwertzguy 1

51

विशिष्ट प्रारूप है:

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

1
यदि आपको उसके नाम के लिए प्रतिबद्ध है तो उसे जॉन डो के पासवर्ड की आवश्यकता क्यों नहीं है?
नारेक

3
@Narek इस संदर्भ में क्या होगा?
पीर

37

मानक एयू थोर <author@example.com> प्रारूप

निम्नलिखित के रूप में परिभाषित किया जाना चाहिए: (जहाँ तक मुझे पता है, बिल्कुल कोई वारंटी के साथ)

एयू थोर = आवश्यक उपयोगकर्ता नाम

  • वर्णों का पृथक्करण संभवतः इंगित करता है कि रिक्त स्थान की अनुमति है, यह शुरुआती के समान हो सकता है।
  • उपयोगकर्ता नाम को 1 स्थान का पालन करना होगा, अतिरिक्त रिक्त स्थान काट दिया जाएगा

<author@example.com> = वैकल्पिक ईमेल पता

  • हमेशा <> संकेतों के बीच होना चाहिए।
  • ईमेल पता प्रारूप मान्य नहीं है, आप जो चाहें उसमें बहुत अधिक दर्ज कर सकते हैं
  • वैकल्पिक, आप <> का उपयोग करके इसे स्पष्ट रूप से छोड़ सकते हैं

यदि आप इस सटीक सिंटैक्स का उपयोग नहीं करते हैं, तो git मौजूदा कमिट्स के माध्यम से खोज करेगा और पहले कमिट का उपयोग करेगा जिसमें आपकी प्रदान की गई स्ट्रिंग शामिल है।

उदाहरण:

  1. केवल उपयोगकर्ता नाम

    ईमेल पते को स्पष्ट रूप से स्वीकार करें:

    git commit --author="John Doe <>" -m "Impersonation is evil."
    
  2. केवल ईमेल

    तकनीकी रूप से यह संभव नहीं है। आप हालांकि उपयोगकर्ता नाम के रूप में ईमेल पता दर्ज कर सकते हैं और ईमेल पते को स्पष्ट रूप से छोड़ सकते हैं। ऐसा लगता नहीं है कि यह बहुत उपयोगी है। मुझे लगता है कि यह ईमेल पते से उपयोगकर्ता नाम निकालने के लिए और भी अधिक समझ में आएगा और फिर उपयोगकर्ता नाम के रूप में उपयोग करेगा। लेकिन अगर आपको यह करना है:

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

मैं इस में भाग गया जब एक भंडार को व्यापारिक से गिट में बदलने की कोशिश कर रहा था। मैंने msysgit पर 1.7.10 कमांड का परीक्षण किया।


13

बस पूरक :

git कमिट --author = "john@doe.com" -m "प्रतिरूपण बुराई है।"

कुछ मामलों में प्रतिबद्ध अभी भी विफल है और आपको निम्न संदेश दिखाता है:

*** कृपया मुझे बताएं कि आप कौन हैं।

Daud

git config --global user.email "you@example.com" git config --global user.name "आपका नाम"

अपने खाते की डिफ़ॉल्ट पहचान सेट करने के लिए। ओमिट - केवल इस रिपॉजिटरी में पहचान सेट करने के लिए।

घातक: ईमेल पते को ऑटो-डिटेक्ट करने में असमर्थ (xxxx मिला)

तो बस "git config" चलाएं, फिर "git प्रतिबद्ध"


यह वही है जो मुझे चाहिए था। मेरे पास कॉर्पोरेट GitHub और सार्वजनिक GitHub के लिए अलग-अलग उपयोगकर्ता नाम और ईमेल हैं। मुझे अपने सार्वजनिक GitHub उपयोगकर्ता नाम और ईमेल का उपयोग करने के लिए अपना वर्तमान रेपो सेट करने की आवश्यकता थी ताकि मैं एक निजी ईमेल को उजागर किए बिना अपने परिवर्तनों को धक्का दे सकूं।
टीबीकिरुलोसिस

8

स्वरूप

A U Thor <author@example.com>

बस इसका मतलब है कि आपको निर्दिष्ट करना चाहिए

FirstName MiddleName LastName <email@example.com>

मध्य और अंतिम नामों की तरह विकल्प वैकल्पिक हैं (हो सकता है कि ईमेल से पहले का हिस्सा सख्त प्रारूप में न हो)। उदाहरण के लिए, यह कोशिश करें:

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

डॉक्स कहते हैं:

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

यदि आप इस प्रारूप का उपयोग नहीं करते हैं, तो git एक पैटर्न के रूप में स्ट्रिंग प्रदान करता है और अन्य कमिट्स के लेखकों के बीच मिलान नाम खोजने की कोशिश करता है।


FirstName MiddleName LastName जैसी कोई चीज़ नहीं है । देखें इस
सामी डिंडाने

3

--authorविकल्प काम नहीं करता:

*** Please tell me who you are.

Run

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

यह करता है:

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

यह एकमात्र ऐसा है जिसने मेरे लिए काम किया। ध्यान दें आदेश महत्वपूर्ण है। git commit -c user.name="j bloggs" -am "message"एक त्रुटि देता हैfatal: Option -m cannot be combined with -c/-C/-F
मार्टिन

2

गेट बैश खोलें।

एक उपयोगकर्ता नाम सेट करें:

$ git config --global user.name "नाम परिवार" पुष्टि करें कि आपने सही तरीके से Git यूजरनेम सेट किया है:

$ git config --global user.name

नाम परिवार

Git ईमेल सेट करें:

$ git config --global user.email email@foo.com पुष्टि करें कि आपने सही तरीके से Git ईमेल सेट किया है:

$ git config --global user.email

email@foo.com


0

यह सब निर्भर है कि आप कैसे प्रतिबद्ध हैं।

उदाहरण के लिए:

git commit -am "Some message"

अपने ~\.gitconfigउपयोगकर्ता नाम का उपयोग करेगा । दूसरे शब्दों में, यदि आप उस फ़ाइल को खोलते हैं, तो आपको एक पंक्ति देखनी चाहिए जो इस तरह दिखती है:

[user]
    email = someemail@gmail.com

यही वह ईमेल होगा जिसे आप बदलना चाहते हैं। यदि आपका Bitbucket या Github आदि के माध्यम से एक पुल अनुरोध कर रहा है, तो आप वह होंगे जो आप के रूप में लॉग इन हैं।


0

एक विकल्प अगर चिंता असली ईमेल पते को छिपाने की है ... यदि आप जीथब के लिए प्रतिबद्ध हैं तो आपको एक वास्तविक ईमेल की आवश्यकता नहीं है जिसका आप उपयोग कर सकते हैं<username>@users.noreply.github.com

गितुब का उपयोग करने या न करने के बावजूद, आप शायद सबसे पहले अपने कम्फ़र्ट विवरण (विंडोज़ के उपयोग पर SET GIT_...) बदलना चाहते हैं

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

फिर लेखक को सेट करें

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

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


अन्य सभी समाधानों के विपरीत, यह तब काम करता है जब आपने शुरू में user.email/user.name को इनिशियलाइज़ नहीं किया है।
एंडी

-2

उपयोगकर्ता ईमेल और नाम सेट करने के लिए टर्मिनल से इन दोनों कमांड को चलाएं

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

 git config --global user.name "your name" 
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.