Git पुश के लिए उपयोगकर्ता नाम और पासवर्ड की आवश्यकता होती है


1433

मैंने अपने GitHub खाते से अपने PC पर Git रिपॉजिटरी पर क्लोन किया।

मैं अपने पीसी और लैपटॉप दोनों के साथ काम करना चाहता हूं, लेकिन एक GitHub खाते के साथ।

जब मैं अपने PC का उपयोग करके GitHub से धक्का या खींचने की कोशिश करता हूं, तो इसके लिए उपयोगकर्ता नाम और पासवर्ड की आवश्यकता होती है, लेकिन तब नहीं जब मैं लैपटॉप का उपयोग कर रहा हूं!

मैं हर बार अपने उपयोगकर्ता नाम और पासवर्ड को टाइप नहीं करना चाहता  origin। मुझे यहां क्या समझ नहीं आ रहा है?


1
हां लेकिन मुझे क्या करना चाहिए? मैंने keygen उत्पन्न किया और क्या?
20

1
आपको अपने Github खाते ( github.com/account/ssh ) के साथ पबकी को पंजीकृत करना होगा और सही उपयोगकर्ता नाम का उपयोग करने के लिए अपने SSH क्लाइंट को कॉन्फ़िगर करना होगा।
jwodder

1
मैंने वह सब किया है, लेकिन अभी भी इसके लिए उपयोगकर्ता नाम और पासवर्ड की आवश्यकता है! क्या दो पीसी के साथ एक खाते का उपयोग करना संभव है?
TooCooL

1
यह प्रश्न आपके सभी विकल्पों को इसमें अच्छी तरह से शामिल करता है: stackoverflow.com/questions/5343068/…
ford

2
अब ssh पर स्विच करने की कोई आवश्यकता नहीं है। यह HTTPS के साथ भी संभव है। मेरा उत्तर जांचें।
वरुण अचर

जवाबों:


1959

एक सामान्य कारण SSH के बजाय डिफ़ॉल्ट (HTTPS) का उपयोग करके क्लोनिंग है। आप अपने रिपॉजिटरी में जाकर, "क्लोन या डाउनलोड" पर क्लिक करके इसे ठीक कर सकते हैं, फिर URL फ़ील्ड के ऊपर "SSH का उपयोग करें" बटन पर क्लिक करें और इस तरह अपने मूल रिमोट के URL को अपडेट करें:

git remote set-url origin git@github.com:username/repo.git

यह GitHub में प्रलेखित है: HTTPS से SSH में दूरस्थ URL स्विच करना


61
और कैसे URL बदल यह पता लगाने की, यहां जाएं: stackoverflow.com/a/2432799/60488 : (स्पॉइलर git remote set-url origin git://new.url.here)
जोहान कूल

136
यदि आप सुरक्षा प्रतिबंधों के लिए उपयोगकर्ता (मेरे जैसे) नहीं कर सकते हैं, तो आप ऐसा कर सकते हैं: git remote set-url origin https://name:password@github.com/repo.git (यहाँ टिप्पणी से निकाले गए)
ब्रूनो बेरीसो

134
HTTPS के साथ क्लोनिंग एक आम गलती क्यों है? GitHub अब HTTPS का उपयोग करने की सिफारिश करता है।
डेनिस

8
@smftre डिफ़ॉल्ट रूप से ऐसा ही है, लेकिन आप अपने क्रेडेंशियल्स को कैश करने के लिए एक सहायक का उपयोग कर सकते हैं ।
डेनिस

28
Permission denied (publickey)इस गाइड का उपयोग करके मेरे फिक्स्ड : help.github.com/articles/generating-ssh-keys
वोल्टेरेवो

386

Git रिपॉजिटरी के साथ स्थायी रूप से प्रमाणिकता

क्रेडेंशियल कैशिंग सक्षम करने के लिए निम्न आदेश चलाएँ :

$ git config credential.helper store
$ git push https://github.com/owner/repo.git

Username for 'https://github.com': <USERNAME>
Password for 'https://USERNAME@github.com': <PASSWORD>

आपको कैशिंग एक्सपायर भी निर्दिष्ट करना चाहिए ,

git config --global credential.helper 'cache --timeout 7200'

क्रेडेंशियल कैशिंग को सक्षम करने के बाद, इसे 7200 सेकंड (2 घंटे) के लिए कैश किया जाएगा ।


इसके साथ आपको अपना रिमोट यूआरएल भी बदलना पड़ सकता है। यह git remote set-url origin https://git@github.com/<owner>/<repo>.git 2FA
ब्रॉन डेविस

14
यह स्वीकृत उत्तर होना चाहिए। यह बिल्कुल सवाल का जवाब है।
अब्राहम टीएस

क्या इसे ubuntu फ़ाइलों से सुरक्षा उद्देश्य के लिए 7200 के बाद स्वचालित रूप से हटा दिया जाएगा?
usama

या 12 घंटे के लिए 43,200। आप प्रति दिन एक बार लॉगिन करें। यह कुछ के लिए अधिक उचित हो सकता है।
उर्सक्वायरेल

बस यह कोशिश की - मिल गया:fatal: protocol 'https' is not supported
जोएल

134

मैं बस एक ही समस्या को लेकर आया था, और मुझे जो सबसे सरल समाधान मिला वह था HTTPS एक के बजाय SSH URL का उपयोग करना:

ssh://git@github.com/username/repo.git

और यह नहीं:

https://github.com/username/repo.git

आप अब और के बजाय सिर्फ SSH कुंजी के साथ मान्य कर सकते हैं ।usernamepassword


1
समस्या को ठीक करने का सबसे आसान तरीका, बस दूरस्थ मूल URL को संपादित करें। बस इतना ही। किया हुआ। Thanx!
जोम

1
यह मेरे लिए काम करता है लेकिन पहले मुझे इसे संबोधित करने की आवश्यकता थी: stackoverflow.com/questions/2643502/…
श्रीधर सरनोबत

SSH कुंजी सेट करने के लिए आप help.github.com/articles/connecting-to-github-with-ssh
ksridhar

120

SSH में बदलने के अलावा, आप HTTPS का उपयोग भी कर सकते हैं, यदि आपको अपना पासवर्ड स्पष्ट पाठ में डालने का मन नहीं है। ~/.netrcइसे अपने में रखें और यह आपके उपयोगकर्ता नाम / पासवर्ड (कम से कम लिनक्स और मैक पर) नहीं मांगेगा:

machine github.com
       login <user>
       password <password>

जोड़ (देखें VonC की दूसरी टिप्पणी): विंडोज पर फ़ाइल का नाम है%HOME%\_netrc

यदि आप एन्क्रिप्ट करना चाहते हैं तो VonC की पहली टिप्पणी भी पढ़ें।

एक और जोड़ (देखें user137717 की टिप्पणी) जिसका उपयोग आप कर सकते हैं यदि आपके पास 1.7.10 या नया है

एक विश्वसनीय सहायक का उपयोग करके Git में अपने GitHub पासवर्ड को कैश करें :

यदि आप HTTPS का उपयोग करके GitHub रिपॉजिटरी को क्लोन कर रहे हैं, तो आप GitHub से बात करने के लिए हर बार अपने GitHub यूज़रनेम और पासवर्ड को याद रखने के लिए Git को बताने के लिए एक क्रेडेंशियल सहायक का उपयोग कर सकते हैं।

यह लिनक्स, मैक और विंडोज पर भी काम करता है।


3
हाँ, यह लिनक्स पर काम करता है, लेकिन विंडोज पर gitbash के लिए काम नहीं करता है।
डायल्सन सेल्स

3
@ डॉल्मेन मैं देख रहा हूं कि आपका क्या मतलब है, लेकिन अगर आपको अपना पासवर्ड एक स्पष्ट पाठ में डालने का मन है, तो आप ... एन्क्रिप्ट कर सकते हैं;) stackoverflow.com/a/18362082/6309 देखें । और वह भी Github के 2-कारक प्रमाणीकरण (2FA) के साथ संगत है: stackoverflow.com/a/18607931/6309
VONC

3
@ यह पूरी तरह से एक डॉस सत्र या विंडोज पर गिट बैश से काम करता है, बशर्ते आप अपनी फ़ाइल %HOME%\_netrc(इसके बजाय ~/.netrc) को कॉल करें । उस फ़ाइल को एन्क्रिप्ट करने के लिए stackoverflow.com/a/18362082/6309 भी देखें ।
VonC

1
यह लिनक्स में बहुत अच्छी तरह से काम करता है, विशेष रूप से वीपीएन पर गिट का उपयोग करते हुए।
इवान हू

3
आपको इसे स्पष्ट पाठ में डालने या इसे एन्क्रिप्ट करने की आवश्यकता नहीं है। सहायक उपयोगिता आपके लिए इसे कैश करेगी और सेट होने में 30 सेकंड लेगी। help.github.com/articles/caching-your-github-password-in-git/…
user137717

86

पिछले उत्तरों से भ्रमित हुए बिना पढ़े लोगों के लिए, आप कर सकते हैं:

git remote -v

जो कुछ इस तरह से जवाब देगा

origin    https://yourname@github.com/yourname/yourrepo.git (fetch)
origin    https://yourname@github.com/yourname/yourrepo.git (push)

फिर आप कई अन्य सुझाए गए कमांड चला सकते हैं, लेकिन अब आप ऊपर से अपना नाम और अपना नाम जानते हैं, इसलिए आप बस yourname/yourrepo.gitऊपर से काट और पेस्ट कर सकते हैं :

git remote set-url origin git@github.com:yourname/yourrepo.git

1
मैंने यह कोशिश की। यह मुझसे paraphraseहर बार मांगता है । मैंने
बजे

के स्थान पर क्या जाता है yourrepo?
रफी

2
@Raphi चलाने git remote -vऔर देखो क्या बाहर आता है
डेविड

1
अन्य उत्तरों को यह सलाह देनी चाहिए।
बेनेट ब्राउन

57

आप SSH का उपयोग कर रहे हैं और अपनी निजी कुंजी किसी पासफ़्रेज़ से एन्क्रिप्ट है, तो आप अभी भी निजी कुंजी के लिए पदबंध / पासवर्ड दर्ज करने के लिए संकेत दिया जाएगा जब आप Git के साथ नेटवर्क संचालन कर की तरह push, pullहै, और fetch

निजी कुंजी पासफ़्रेज़ / पासवर्ड क्रेडेंशियल्स को बचाने के लिए ssh-Agent का उपयोग करें

यदि आप हर बार अपना पासफ़्रेज़ दर्ज करने से बचना चाहते हैं, तो आप ssh-agentटर्मिनल सत्र के अनुसार एक बार अपनी निजी कुंजी पासफ़्रेज़ क्रेडेंशियल्स को संग्रहीत करने के लिए उपयोग कर सकते हैं , जैसा कि मैं अपने उत्तर में समझाता हूं कि आपके प्रमाणीकरण एजेंट के लिए कनेक्शन नहीं खोला जा सकता है :

$ eval `ssh-agent -s`
$ ssh-add

Windows msysgit Bash में, आपको के आउटपुट का मूल्यांकन करने की आवश्यकता है ssh-agent , लेकिन मुझे यकीन नहीं है कि आपको अन्य विकास परिवेशों और ऑपरेटिंग सिस्टम में भी ऐसा करने की आवश्यकता है।

ssh-addआपके घर के .sshफ़ोल्डर में एक निजी कुंजी के लिए कहा जाता हैid_rsa जाती है, जिसे डिफ़ॉल्ट नाम है, लेकिन आप एक फ़ाइलपैथ को एक अलग नाम से कुंजी में पास कर सकते हैं।

एजेंट को मारना

जब आप अपने टर्मिनल सत्र के साथ कर रहे हैं, तो आप ssh-agentमार झंडे के साथ बंद कर सकते हैं -k:

$ ssh-agent -k

जैसा कि ssh-agentमैनुअल में बताया गया है :

-k

वर्तमान एजेंट को मारें (SSH_AGENT_PID पर्यावरण चर द्वारा दिया गया)।

वैकल्पिक समयबाह्य

इसके अलावा, यह एक वैकल्पिक टाइमआउट पैरामीटर ले सकता है जैसे:

$ ssh-add -t <timeout>

जहां <timeout>स्वरूप की है <n>hके लिए <n>घंटे, <n>mके लिए <n>मिनट, और इतने पर।

ssh-agentमैनुअल के अनुसार :

-t life

एजेंट को जोड़े गए अधिकतम जीवनकाल के लिए डिफ़ॉल्ट मान सेट करें। जीवनकाल सेकंड में या sshd_config (5) में निर्दिष्ट समय प्रारूप में निर्दिष्ट किया जा सकता है । Ssh-add (1) के साथ एक पहचान के लिए निर्दिष्ट जीवनकाल इस मूल्य को ओवरराइड करता है। इस विकल्प के बिना डिफ़ॉल्ट अधिकतम जीवनकाल हमेशा के लिए है।

अधिक समय प्रारूपों के लिए इस पृष्ठ को देखें

Cygwin उपयोगकर्ताओं के लिए सुरक्षा चेतावनी

Cygwin में ssh- एजेंट का उपयोग करने के साथ Cygwin उपयोगकर्ताओं को संभावित सुरक्षा जोखिम के बारे में पता होना चाहिए :

लोगों को Cygwin 1 के तहत ssh- एजेंट के संभावित खतरों का संज्ञान होना चाहिए , हालांकि एक स्थानीय नेटस्टैट और रिमोट पोर्ट्सकैन के तहत ऐसा नहीं लगता कि पोर्ट / tmp / ssh-foo में निर्दिष्ट पोर्ट किसी के लिए भी सुलभ है ...?

[1]: http://www.cygwin.com/ml/cygwin/2001-01/msg00063.html

और उद्धृत लिंक पर :

हालाँकि, ध्यान दें कि Cygwin के Unix डोमेन सॉकेट्स FUNDAMENTALLY INSECURE हैं और इसलिए मैं Cygwin के तहत ssh- Agent के उपयोग को दृढ़ता से अस्वीकार करता हूं ।

जब आप Cygwin के तहत ssh-Agent चलाते हैं तो यह /tmp/ssh-$USERNAME/निर्देशिका में AF_UNIX सॉकेट बनाता है । Cygwin के तहत AF_UNIX सॉकेट्स AF_INET सॉकेट्स के माध्यम से अनुकरण किए जाते हैं। आप आसानी से देख सकते हैं कि यदि आप /tmp/ssh-$USERNAME/agent-socket-*नोटपैड के माध्यम से फाइल देखेंगे । आपको कुछ ऐसा दिखाई देगा

!<socket >2080

फिर भागो netstat -aऔर आश्चर्य! आपके पास 2080 को पोर्ट करने के लिए कुछ कार्यक्रम है। यह ssh- एजेंट है। जब ssh सर्वर से RSA चुनौती प्राप्त करता है, तो यह संबंधित /tmp/ssh-$USERNAME/agent-socket-*(Cygwin के तहत, हमारे मामले में, इसका मतलब है कि इसका कनेक्शन खुलेगा localhost:2080) और ssh- एजेंट को RSA चुनौती को उस निजी कुंजी के साथ संसाधित करने के लिए कहता है, और फिर यह बस ssh- एजेंट से प्राप्त प्रतिक्रिया को सर्वर से पास करता है।

यूनिक्स के तहत, ऐसा परिदृश्य समस्याओं के बिना काम करता है, क्योंकि यूनिक्स कर्नेल अनुमतियों की जांच करता है जब प्रोग्राम एक AF_UNIX सॉकेट तक पहुंचने का प्रयास करता है। AF_INET सॉकेट्स के लिए, हालांकि, कनेक्शन अनाम हैं ("असुरक्षित" पढ़ें)। कल्पना करें, कि आपके पास Cygwin ssh-Agent चल रहा है। एक दुर्भावनापूर्ण हैकर आपके बॉक्स को पोर्ट कर सकता है, ssh- एजेंट द्वारा उपयोग किए जाने वाले खुले पोर्ट का पता लगा सकता है, अपने SSH सर्वर से एक कनेक्शन खोल सकता है, उससे RSA चुनौती प्राप्त कर सकता है, उसे आपके ssh- एजेंट को एक खुले पोर्ट के माध्यम से भेज सकता है जो उसने पाया / प्राप्त किया, RSA प्रतिक्रिया, इसे SSH सर्वर और वॉइला को भेजें, उसने आपके सर्वर पर सफलतापूर्वक आपके रूप में लॉग इन किया।


अच्छा और विस्तृत लगता है। मैंने https क्रेडेंशियल हेल्पर का ध्यान रखा , और आपने ssh कनेक्शन का ध्यान रखा! +1
VonC

49

स्रोत: सेट अप गिट

निम्न कमांड आपके पासवर्ड को कुछ समय के लिए मेमोरी में बचाएगा ( Git 1.7.10 या नए के लिए)।

$ git config --global credential.helper cache
# Set git to use the credential memory cache

$ git config --global credential.helper 'cache --timeout=3600'
# Set the cache to timeout after one hour (setting is in seconds)

2
मैं कई क्रेडेंशियल्स (हर पासवर्ड को याद किए बिना ) कैशिंग के लिए 'netrc' क्रेडेंशियल मदद ( stackoverflow.com/a/18362082/6309 ) को पसंद करता हूं । लेकिन अगर आप विंडोज पर हैं और मेमोरी कैश का उपयोग करना चाहते हैं, तो आप winstore (जरूरत stackoverflow.com/a/15310274/6309 )
VonC

9
इस प्रकार यह अब तक का सबसे बेहतरीन जवाब है।
चिले दस ब्रिंक

35

जब आप Git पुल एंड पुश के लिए https का उपयोग remote.origin.urlकरते हैं, तो हर बार पुश करने के दौरान इनपुट उपयोगकर्ता नाम (या / और पासवर्ड) से बचने के लिए, अपनी परियोजना के लिए कॉन्फ़िगर करें।

कैसे कॉन्फ़िगर करें remote.origin.url:

URL प्रारूप:
    https: // {उपयोगकर्ता नाम: पासवर्ड @} {github.com/ मालिक} / {} रेपो

URL में पैरामीटर:

* उपयोगकर्ता नाम 
वैकल्पिक, जरूरत पड़ने पर उपयोग करने वाला उपयोगकर्ता नाम।
प्रमाणीकरण, यदि निर्दिष्ट किया जाता है, तो प्रमाणीकरण की आवश्यकता होने पर फिर से उपयोगकर्ता नाम दर्ज करने की आवश्यकता नहीं है। ईमेल का उपयोग न करें; अपने उपयोगकर्ता नाम का उपयोग करें जिसमें "@" नहीं है, अन्यथा URL को सही ढंग से पार्स नहीं किया जा सकता है, * कुंजिका वैकल्पिक, प्रमाणीकरण की जरूरत है जब उपयोग करने के लिए पासवर्ड। यदि निर्दिष्ट किया गया है, तो प्रमाणीकरण की आवश्यकता होने पर पासवर्ड फिर से दर्ज करने की कोई आवश्यकता नहीं है। सुझाव: यह मान सादे पाठ के रूप में संग्रहीत किया जाता है, इसलिए सुरक्षा चिंताओं के लिए, इस पैरामीटर को निर्दिष्ट न करें, * जैसे git config Remote.origin.url https: //eric@github.com/eric/myproject

@ यूपीडेट - उपयोग करना ssh

मुझे लगता है कि sshप्रोटोकॉल का उपयोग करना एक बेहतर समाधान है https, भले ही सेटअप कदम थोड़ा अधिक जटिल है।

किसी न किसी कदम:

  • कमांड का उपयोग करके ssh कीज बनाएँ, जैसे ssh-keygenकि लिनक्स पर, विंडोज़ पर msysgitसमान कमांड प्रदान करते हैं।
  • स्थानीय कुंजी पर निजी कुंजी को एक उचित स्थान पर रखें, जैसे ~/.ssh। और इसे ssh-addकमांड के माध्यम से ssh एजेंट में जोड़ें ।
  • सार्वजनिक कुंजी को Git सर्वर पर अपलोड करें।
  • remote.origin.urlGit रिपॉजिटरी को sshस्टाइल में बदलना , जैसे,git@gitlab.com:myaccount/myrepo.git
  • फिर जब पुल या पुश करते हैं, तो उपयोगकर्ता नाम या पासवर्ड दर्ज करने की कोई आवश्यकता नहीं है।

सुझाव:

  • यदि आपकी ssh कुंजी में पासफ़्रेज़ है, तो आपको अपनी मशीन के प्रत्येक पुनरारंभ के बाद कुंजी के पहले उपयोग पर इसे डिफ़ॉल्ट रूप से इनपुट करना होगा।

@Update - के बीच स्विच करें httpsऔर sshप्रोटोकॉल।

बस बदलना remote.origin.urlपर्याप्त होगा, या आप repo_home/.git/configमान को बदलने के लिए सीधे संपादित कर सकते हैं (जैसे viलिनक्स पर उपयोग करना)।

आमतौर पर मैं प्रत्येक प्रोटोकॉल के लिए एक पंक्ति जोड़ता हूं, और उनमें से एक का उपयोग करके टिप्पणी करता हूं #

उदाहरण के लिए

[दूरस्थ "मूल"]
        url = git@gitlab.com: myaccount / myrepo.git
        # url = https: //myaccount@gitlab.com/myaccount/myrepo.git
        लाने = = refs / सिर / *: refs / remotes / मूल / *

क्या आप सुनिश्चित हैं कि http [ -एस ] -आधारित URL समर्थन उपयोगकर्ता नाम विस्तार? मैनुअल में git-fetch(1)उल्लेख किया गया है कि केवल git/ ssh-आधारित URL के लिए।
दिन

@plmday हाँ, मैं इसका उपयोग कर रहा हूं, मेरा git संस्करण 1.8.2.3 और 1.8.4 है, मुझे यकीन नहीं है कि यदि उच्च क्रिया इस बारे में बदलती है।
एरिक वांग

1
URL में अपना पासवर्ड प्रदान करने वाले NB (HTTPS का उपयोग करते समय भी) का अर्थ है कि यह आपके और आपके भंडार के बीच की हर चीज को दिखाई देता है।
विलियम

3
नहीं, पासवर्ड प्रदान करना https://username:password@github.com/सुरक्षित है। देखें stackoverflow.com/questions/4980912/…
slowhand

1
और यही मैं (पूर्ण स्वचालन के लिए) देख रहा था
यहोशू

16

आप अपने GitHub पासवर्ड को Git में कैश कर सकते हैं:

GitHub के आधिकारिक प्रलेखन से बस निर्देशों का पालन करें ।

उपरोक्त लिंक के निर्देशों का पालन करने के बाद, आपको हर बार अपने उपयोगकर्ता नाम / पासवर्ड को टाइप किए बिना अपनी रिपॉजिटरी से पुश / पुल / करने में सक्षम होना चाहिए।


5
यह यहाँ सबसे अच्छा जवाब है और स्वीकार किया जाना चाहिए एक IMO
TheZuck

1
सहमत, आधिकारिक दस्तावेज का हवाला देते हुए एक जवाब पूर्वता लेना चाहिए। मैंने खुशी से उनके निर्देशों का पालन किया और मानक सम्मेलनों का उपयोग करना पसंद किया।
जॉननीब

10

यहाँ एक और विकल्प है:

लिखने के बजाय

git push origin HEAD

आप लिख सकते हैं:

git push https://user:pass@yourrepo.com/path HEAD

जाहिर है, अधिकांश गोले के साथ यह पासवर्ड इतिहास में कैश हो जाएगा, इसलिए इसे ध्यान में रखें।


1
बैश में, एक या एक से अधिक प्रमुख स्थान जोड़ना आमतौर पर इसे इतिहास से बाहर रखेगा। लेकिन गिट बैश में नहीं , हालांकि।
पीटर मोर्टेंसन

यह बस मेरे लिए काम किया :)
नवीन कुमार वी।

9

मेरे लिए जो काम किया गया था, उसे संपादित करना .git/configऔर उपयोग करना

[remote "origin"]
        url = https://<login>:<password>@gitlab.com(...).git

यह बिना कहे चला जाता है कि यह आपके पासवर्ड को संग्रहीत करने का एक असुरक्षित तरीका है लेकिन ऐसे वातावरण / मामले हैं जहां यह समस्या नहीं हो सकती है।


6

यदि SSH कुंजी या .netrcफ़ाइल आपके लिए काम नहीं करती है, तो एक और सरल, लेकिन कम सुरक्षित समाधान, जो आपके लिए काम कर सकता है वह है git-क्रेडेंशियल-स्टोर - डिस्क पर क्रेडेंशियल संग्रहीत करने के लिए सहायक:

git config --global credential.helper store

डिफ़ॉल्ट रूप से, क्रेडेंशियल फ़ाइल में सहेजे जाएंगे ~/.git-credentials। इसे बनाया और लिखा जाएगा।

कृपया ध्यान दें कि इस सहायक का उपयोग डिस्क पर अनएन्क्रिप्टेड आपके पासवर्ड को संग्रहीत करेगा, केवल फाइल सिस्टम अनुमतियों द्वारा संरक्षित। यदि यह स्वीकार्य सुरक्षा व्यापार नहीं हो सकता है।


5

मेरी भी यही समस्या थी।

इसलिए मैंने .git/configअपने प्रोजेक्ट से फाइल बदल दी ,

url = https://github.com/<your-user-here>/<your-repo-here>

सेवा

url = git@github.com:<your-user-here>/<your-repo-here>

और SSH सार्वजनिक कुंजी को Git प्रोफाइल में जोड़ा जो सेटिंग में है।

SSH सार्वजनिक कुंजी के लिए:

cat ~/.ssh/id_rsa.pub

1
साथ cat ~/.ssh/id_rsa.pubRSA कुंजी हो और Git वेब पोर्टल की स्थापना में पेस्ट करें।
अनुपम मौर्य

4

HTTPS के लिए अपडेट:

GitHub ने Windows के लिए एक नया प्रोग्राम लॉन्च किया है जो HTTPS का उपयोग करते समय आपकी साख को संग्रहीत करता है:

काम में लाना:

  • यहां से प्रोग्राम डाउनलोड करें

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

    [credential]
        helper = !'C:\\Path\\To\\Your\\Downloaded\\File\\git-credential-winstore.exe'
    

    ध्यान दें कि लाइन ब्रेक के बाद [credential]। यह आवश्यक है।

  • अपने कमांड लाइन क्लाइंट को खोलें और git push origin masterएक बार प्रयास करें । यदि यह आपसे पासवर्ड मांगता है, तो इसे दर्ज करें और आप इसके माध्यम से। पासवर्ड सहेजा गया!


धन्यवाद वरुण, काम किया आकर्षण!
जॉय

4

Windows Git उपयोगकर्ताओं के लिए, चलाने के बाद git config --global credential.helper store, अगर यह अभी भी एक पासवर्ड के लिए संकेत देता है, तो आप इस कमांड का उपयोग करते हुए कॉन्फ़िगरेशन फ़ाइल को कहाँ लिखा जाता है, यह बेहतर तरीके से जाँचेंगे।

git config --list --show-origin

मेरे मामले में, मैन्युअल रूप से कॉन्फ़िगरेशन फ़ाइल 'C: \ Program Files \ Git \ mingw64 \ etc \ gitconfig' को संपादित करने और निम्नलिखित पाठ को जोड़ने के बाद, इसने काम किया।

[credential]
    helper = store

3

आपके पास मूल रूप से दो विकल्प हैं।

यदि आप दोनों मशीनों पर एक ही उपयोगकर्ता का उपयोग करते हैं तो आपको अपने पीसी की .pub कुंजी की प्रतिलिपि बनाने की आवश्यकता होती है, इसलिए GitHub जानता है कि आप एक ही उपयोगकर्ता हैं।

यदि आपने अपने पीसी के लिए एक नई .pub फ़ाइल बनाई है और मशीनों को विभिन्न उपयोगकर्ताओं के रूप में मानना ​​चाहते हैं, तो आपको नई .pub फ़ाइल को GitHub वेबसाइट पर पंजीकृत करना होगा।

यदि यह अभी भी काम नहीं करता है तो हो सकता है क्योंकि ssh को सही ढंग से कॉन्फ़िगर नहीं किया गया है और यह ssh आपकी कुंजी का स्थान खोजने में विफल है। प्रयत्न

ssh -vv username@github.com

अधिक जानकारी प्राप्त करने के लिए SSH क्यों विफल हो जाता है।


3

अपनी Git कॉन्फ़िगरेशन फ़ाइल को सीधे अपडेट करना ( यदि आप फैंसी कमांड को याद नहीं करना चाहते हैं ):

.git/configअपने पसंदीदा टेक्स्ट एडिटर में अपनी फ़ाइल खोलें । यह उस फ़ोल्डर में होगा जिसे आपने क्लोन किया था या जिस रिपॉजिटरी में आपने प्रदर्शन किया git initथा। उस रिपॉजिटरी में जाएं। .gitएक छिपा हुआ फ़ोल्डर है, और दबाकरCtrl + Hमें छिपे हुए फ़ोल्डर को दिखाना चाहिए, ( ls -aटर्मिनल में)।

नीचे का एक नमूना है .git/config फ़ाइल । इन पंक्तियों को कॉपी और पेस्ट करें और अपनी Git जानकारी के साथ उन पंक्तियों को अपडेट करना सुनिश्चित करें।

[user]
        name = Tux
        email = tux@gmail.com
        username = happy_feet

[remote "origin"]
        url = https://github.com/happy_feet/my_code.git
        fetch = +refs/heads/*:refs/remotes/origin/*

SSH के लिए निम्नलिखित प्रारूप के साथ URL भाग बदलें:

url = git@github.com:happy_feet/my_code.git

( उपरोक्त प्रारूप GitHub या Bitbucket जैसे विभिन्न Git रिमोट सर्वर के साथ नहीं बदलते हैं। यह वैसा ही है यदि आप Git का उपयोग संस्करण नियंत्रण के लिए कर रहे हैं ):

नोट: दूरस्थ Git रिपॉजिटरी से जुड़ने का SSH तरीका आपको अपने GST रिमोट सर्वर में अपनी सार्वजनिक SSH कुंजी जोड़ने की आवश्यकता होगी ( जैसे GitHub या Bitbucket ) के लिए । SSH कुंजी के लिए सेटिंग पृष्ठ खोजें )।

अपनी SSH कुंजियाँ कैसे जनरेट करें, यह जानने के लिए: SSH कुंजियाँ बनाना


2

इसी से मेरा काम बना है:

git remote set-url origin https://username@github.com/username/reponame.git

उदाहरण:

git remote set-url origin https://jsmith@github.com/jsmith/master.git

धन्यवाद, मैं आपका जवाब दूंगा
मंदीप सिंह

2

आपको दो चरण करने की आवश्यकता है -

  1. git remote remove origin
  2. git remote add origin git@github.com:NuggetAI/nugget.git

ध्यान दें कि Git URL एक SSH URL है न कि HTTPS URL ... जिसे आप यहाँ से चुन सकते हैं:

यहां छवि विवरण दर्ज करें


2

यदि आपने SSH के बजाय HTTPS का क्लोन बना लिया है और पुल, पुश और लाने पर उपयोगकर्ता नाम और पासवर्ड प्रॉम्प्ट के साथ समस्या का सामना कर रहे हैं। आप इस समस्या को केवल UBUNTU के लिए हल कर सकते हैं

चरण 1: रूट डायरेक्टरी पर जाएं

cd ~/

एक फ़ाइल बनाएँ .git-क्रेडेंशियल्स

इस सामग्री को अपने साथ उस फ़ाइल में जोड़ें usename passwordऔरgithosting URL

https://user:pass@example.com

फिर कमांड निष्पादित करें

git config --global credential.helper store

अब आप बिना किसी परेशानी के अपने रेपो से सभी विवरणों को खींचने और खींचने में सक्षम होंगे।


0

यदि आप विंडोज के तहत Git (उदाहरण के लिए, Git Bash) का उपयोग कर रहे हैं (और यदि आप HTTPS से SSH में स्विच नहीं करना चाहते हैं), तो आप Windows के लिए Git क्रेडेंशियल मैनेजर का भी उपयोग कर सकते हैं

यह एप्लिकेशन आपके लिए उपयोगकर्ता नाम और पासवर्ड रखेगा ...


0

जैसा कि कई उपयोगकर्ताओं ने कहा है, आपको बस अपना GT रिपॉजिटरी URL HTTPS से SSH में बदलना होगा।

यदि आपने अपनी मशीन में SSH कुंजी उत्पन्न नहीं की है, तो आप इसे करने जा रहे हैं।

अतिरिक्त जानकारी के रूप में, इस परिवर्तन को करने के बाद भी मुझे वही त्रुटि मिल रही थी:

अनुमति नहीं मिली।

मेरे मामले में, समस्या यह थी कि मैं ngh कमांड निष्पादित करने के लिए विंडोज शेल का उपयोग कर रहा था; चूंकि यह कमांड SSH वाक्यांश का अनुरोध करने के लिए एक संकेत खोलना चाहिए और विंडोज शेल इस प्रकार के संकेतों को नहीं खोलता है, इसलिए प्रमाणीकरण बस विफल हो गया।

इसलिए, मुझे अभी गिट खोल खोलना था और वहाँ ngh कमांड को अंजाम देना था, शीघ्र ही SSH वाक्यांश को हर बार इसे और "voilà" के लिए कहा था ... यह ठीक काम किया!


-1
    # create the company identity file
    ssh-keygen -t rsa -b 4096 -C "first.last@corp.com"
    # save private key to ~/.ssh/id_rsa.corp, 
    cat ~/.ssh/id_rsa.corp.pub # copy paste this string into your corp web ui security ssh keys

    # create your private identify file
    ssh-keygen -t rsa -b 4096 -C "me@gmail.com"
    # save private key to ~/.ssh/id_rsa.me, note the public key ~/.ssh/id_rsa.me.pub
    cat ~/.ssh/id_rsa.me.pub # copy paste this one into your githubs, private keys

    # clone company internal repo as follows
    GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa.corp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \
    git clone git@git.in.corp.com:corp/project.git

    export git_msg="my commit msg with my corporate identity"
    git add --all ; git commit -m "$git_msg" --author "MeFirst MeLast <first.last@corp.com>"
    GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa.corp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \
    git push 

    # clone public repo as follows
    GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa.corp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \
    git clone git@github.com:acoolprojectowner/coolproject.git

    export git_msg="my commit msg with my personal identity"
    git add --all ; git commit -m "$git_msg" --author "MeFirst MeLast <first.last@gmail.com>"
    GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa.me -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \
    git push 

    # stop :: how-to use different ssh identity files
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.