हर बार पुश करने के दौरान Git यूजरनेम पूछता है


675

जब भी मैं अपने रेपो गिट में धकेलने की कोशिश करता हूं तो दोनों पूछते हैं username & password

मुझे हर बार अपना पासवर्ड दोबारा दर्ज करने में कोई समस्या नहीं है लेकिन समस्या उपयोगकर्ता नाम दर्ज करने में है। मैं httpsअपने भंडार का क्लोन बनाने के लिए उपयोग करता हूं।

इसलिए, मैं git को कैसे कॉन्फ़िगर कर सकता हूं ताकि यह usernameप्रत्येक पर न पूछें git push

मैं लिनक्स के लिए नया हूं लेकिन विंडोज़ में IIRC git pushकेवल पासवर्ड के लिए पूछता है।


1
संबंधित प्रश्न: stackoverflow.com/questions/2233590/…
जुग

@Wug: लेकिन मैं पासवर्ड स्टोर नहीं करना चाहता। मैं केवल उपयोगकर्ता नाम संग्रहीत करना चाहता हूं।
रणराग

4
उन निर्देशों का पालन करने और पासवर्ड लाइन को छोड़ने का प्रयास करें।
जुग


आपके प्रारंभिक प्रश्न पर
सुपरयुसर

जवाबों:


975

संपादित करें (@ dk14 के अनुसार मध्यस्थों और टिप्पणियों द्वारा सुझाए गए)

चेतावनी: यदि आप credential.helper storeउत्तर से उपयोग करते हैं, तो आपका पासवर्ड पूरी तरह से अनएन्क्रिप्टेड ("जैसा है") पर संग्रहीत किया जाएगा~/.git-credentials । कृपया नीचे दिए गए टिप्पणी अनुभाग या "लिंक किए गए" अनुभाग से उत्तर देखें, खासकर अगर आपके नियोक्ता के पास सुरक्षा मुद्दों के लिए शून्य सहिष्णुता है।

हालांकि स्वीकार किए जाने के बावजूद, यह केवल उपयोगकर्ता नाम (पासवर्ड नहीं) छोड़ने के बारे में वास्तविक ओपी के प्रश्न का उत्तर नहीं देता है। उस सटीक समस्या वाले पाठकों के लिए @ ग्रेविटी का जवाब काम आ सकता है।


मूल उत्तर (@ अलेक्सेंडर झू द्वारा):

आप निम्न कमांड का उपयोग करके अपने क्रेडेंशियल्स को स्टोर कर सकते हैं

$ git config credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>

इसके अलावा मैं आपको पढ़ने के लिए सुझाव देता हूं
$ git help credentials


160
चेतावनी, इस पद्धति में कोई सुरक्षा नहीं है। आपका पासवर्ड प्लेनटेक्स्ट के रूप में संग्रहीत है।
मार्क लकाटा

13
आप यहां सुरक्षा प्राप्त करने के बेहतर तरीके पा सकते हैं - stackoverflow.com/a/28104587/1809978
dk14

4
@MarkLakata - कृपया मुझे बताएं कि मैं इस उत्तर में कमांड को पूर्ववत कैसे कर सकता हूं? इसे पूर्ववत करने के बाद, मैं क्रेडेंशियल्स को संग्रहीत करने के लिए एक सुरक्षित विधि का उपयोग करूंगा।
मास्टरजॉ 2

25
@ testerjoe2 कोशिशgit config --unset credential.helper
dk14

1
टाइमआउट सेट करने के लिए मत भूलना, डिफ़ॉल्ट 15 मिनट है - लगभग 1 वर्ष के लिए 30 मिलियन तक मान सेट करें। यहां मिला: stackoverflow.com/a/35942890/1579667
बेंज

180

आप इसे .git/configअपने स्थानीय भंडार की फ़ाइल में पूरा कर सकते हैं । इस फ़ाइल में 'url' नामक प्रविष्टि के साथ 'रिमोट' नामक एक सेक्शन है। 'Url' प्रविष्टि में आप जिस संग्रह की बात कर रहे हैं, उसका https लिंक होना चाहिए।

जब आप अपने उपयोगकर्ता नाम के साथ होस्ट 'url' को उपसर्ग करते हैं, तो आपको gitअपना उपयोगकर्ता नाम नहीं मांगना चाहिए। यहाँ एक उदाहरण है:

url = https://username@repository-url.com

5
यदि आप अपने उपयोगकर्ता नाम या pw में विशेष वर्णों का उपयोग करते हैं तो आपको उनसे बचना चाहिए। सही भागने वाले वर्णों के लिए en.wikipedia.org/wiki/Percent-escape देखें । उदाहरण के लिए "! @ #" [उद्धरण के बिना] "% 21% 40% 23" द्वारा प्रतिस्थापित किया जाएगा। नीचे "डैनियल
लिर्च

1
क्या उसी रिपॉजिटरी पर काम करने वाले अन्य लोग मेरा उपयोगकर्ता नाम देखेंगे?
कोडीबस्टीन

17
यह ओपी के प्रश्न का सही उत्तर होना चाहिए, अर्थात "उपयोगकर्ता नाम कैसे बनाए रखें, पासवर्ड नहीं"। न केवल यह उत्तर उपयोगकर्ता नाम जारी रखने का उचित तरीका है, यह संभव सुरक्षा जोखिम से भी बचाता है git config credential.helper store
रायलू

मैं इस उत्तर के लिए आभारी हूँ और इस तरह से कोशिश की है, लेकिन यह अभी भी मुझसे हर बार (v 2.1.4) पूछता है - name@gitlab.com और name%40mailaddress.com@gitlab.com के साथ रिमोट की कोशिश की - यह हमेशा के लिए पूछता हैusername for https://gitlab.com:
एली

1
मैं इस कोशिश की और मिल गयाunable to access 'https://<me>@bitbucket.org:<x>/<y>.git/': Illegal port number
इयान ग्रेंजर

118

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

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

$ git config credential.helper store
$ git push https://github.com/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 help credentials

मैंने 7200 तक का समय निर्धारित किया है। लेकिन फिर मैंने इसे परीक्षण के लिए 5 पर सेट करने के लिए सोचा। इसलिए मैंने इसे 5 पर सेट किया, लेकिन फिर जब मैंने 30 सेकंड के बाद फिर से धक्का देने की कोशिश की, लेकिन मुझसे उपयोगकर्ता नाम या पासवर्ड नहीं पूछा गया।
ब्यूटेल बटकस

वैश्विक स्तर पर आपकी साख नहीं बन सकती।
जय पटेल

डॉक्स को संदर्भित करने के लायक सुरक्षा के बारे में: "यह कमांड भविष्य में Git कार्यक्रमों के उपयोग के लिए मेमोरी में क्रेडेंशियल्स को कैश करता है। संग्रहीत क्रेडेंशियल्स कभी भी डिस्क को नहीं छूते हैं, और एक कॉन्फ़िगर करने योग्य टाइमआउट के बाद भूल जाते हैं।" git-scm.com/docs/git-credential-cache
mloskot

2
क्या यह git config credntial.helper storeखतरनाक आदेश नहीं है, जो ~ / .it- क्रेडेंशियल फ़ाइल में प्लेटेक्स्ट-क्रेडेंशियल्स के भंडारण के लिए जिम्मेदार है? मुझे लगता है (और मेरे अनुभव में) ... कैश ...- कमांड पर्याप्त है: git config --clogal credential.helper 'cache --timeout 7200'यह डीर बनाता है : इसमें ~/.git-credential-cacheकैश-फाइल के साथ तो, बस इस कमांड को निष्पादित करें और "... स्टोर" -कम नहीं
एलि।

मेरे लिए काम नहीं किया। फिर भी हर बार पासवर्ड मांगते हुए
इयान

75

GitHub पर इस लेख में बताई गई नई SSH कुंजियाँ जोड़ें ।

यदि Git आपसे अभी भी उपयोगकर्ता नाम और पासवर्ड मांगता है, तो दूरस्थ URL में बदलने https://github.com/का प्रयास git@github.com:करें:

$ git config remote.origin.url 
https://github.com/dir/repo.git

$ git config remote.origin.url "git@github.com:dir/repo.git"

19
यह सही उत्तर होना चाहिए! अपने क्रेडेंशियल को सहेजना अविश्वसनीय रूप से सुरक्षित नहीं है। यदि मेरे पास एक SSH कुंजी है, तो यह मुझसे मेरी विश्वसनीयता केवल इसलिए पूछ रही है क्योंकि मेरे पास यहाँ उल्लिखित सही URL नहीं है।
एलेक्सिस विल्के

2
या आप उपयोग कर सकते हैं git config remote.origin.url "ssh://git@yourRepoHost/yourRepoName.git"
Ndarkness

1
git config Remote.origin.url git@gitlab.com: adammajewski / ray-backward-iteration.git
एडम

1
धन्यवाद, यह वह उत्तर है जिसकी मुझे तलाश थी।
युपेंग तांग

50

सबसे आसान तरीका मुझे इस आदेश के साथ मिला:

git config --global credential.https://github.com.username <your_username>

यह साइट के आधार पर साइट पर काम करता है और आपके वैश्विक गिट विन्यास को संशोधित करता है।

परिवर्तनों को देखने के लिए, उपयोग करें:

git config --global --edit

1
किसी कारण से यह एकमात्र तरीका था जो मेरे लिए काम करता था। धन्यवाद!
मैथ्यूज

क्या यह तरीका सुरक्षित है? क्या गिथब पासवर्ड केवल स्थानीय कंप्यूटर पर संग्रहित किया जाता है और जीथब पर धकेला नहीं जाता है?
अकिन ह्वान

मुझे नहीं पता कि यह स्वीकृत उत्तर क्यों नहीं है, कमांड पूरी तरह से काम करता है और पूरी तरह से जवाब देता है और केवल इस सवाल का जवाब देता है: उपयोगकर्ता नाम नहीं पासवर्ड संग्रहीत करना। धन्यवाद बेन!
अमेलह

तुम भी चला सकते हैं: [Git config --global credential.helper 'कैश --timeout = 3600'] तो अपना पासवर्ड एक घंटे के लिए बचाने के लिए हर बार हो जाएगा
obenda

31

यदि आप ssh के बजाय https का उपयोग कर रहे हैं, तो आप "url" .git/configको user701648 के अनुसार संपादित कर सकते हैं, लेकिन यदि आप चाहें तो आप पासवर्ड भी जोड़ सकते हैं:

url = https://username:password@repository-url.com

1
क्या होगा अगर @मेरे पासवर्ड में शामिल है? url = https://username:abc@123@repository-url.comयह मुझे त्रुटि दे रहा है किCould not resolve host: @123@git.com
राहुल मानकर

usernameभाग को नजरअंदाज किया जा रहा है, जब (जैसे FOO से FOO.git के रूप में) सर्वर रीडायरेक्ट हैं।
मिखाइल टी।

22

आप अपनी साइट पर सभी रिपॉजिटरी के लिए अपना उपयोगकर्ता नाम सेट कर सकते हैं। आप " https://example.com " और "me" को वास्तविक URL और अपने वास्तविक उपयोगकर्ता नाम में बदलना चाहेंगे ।

[credential "https://example.com"]
    username = me

(यह सीधे "गिट मदद क्रेडेंशियल" से है)


16

क्लोन किए गए रेपो कार्यों को बदलना:

git remote set-url origin git@github.com:gitusername/projectname.git

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


यह (GitHub के लिए एक सही जवाब जो सवाल विशेष रूप से पूछ रहा है ... (यकीन नहीं तुम क्यों downvoted गया) है।
टिम ग्रोएनवेल्ड

12

सुनिश्चित करें कि आप http के बजाय SSH का उपयोग कर रहे हैं। इस SO उत्तर की जाँच करें


3
लेकिन मुझे उपयोग करना पड़ा httpक्योंकि मेरे विश्वविद्यालय sshमें sys-admin विभाग द्वारा ब्लॉक किया गया है।
रणराग

तब शायद यह लिंक आपकी मदद करेगा।
gkris

अब इस पर एक आधिकारिक GitHub सहायता पृष्ठ है। मेरे लिए क्या हुआ, मैं लॉग इन करने से पहले अपने ही रिपोज में से एक को क्लोन कर चुका था ताकि वह मुझे पहचान न सके और मुझे विश्वास नहीं हो रहा था कि मैं HTTPS में चूक गया हूं। help.github.com/articles/changing-a-remote-s-url
anon58192932


9

User701648 के उत्तर के अलावा, आप अपने होम फोल्डर में अपने क्रेडेंशियल्स को स्टोर कर सकते हैं (सभी परियोजनाओं के लिए वैश्विक), प्रोजेक्ट फ़ोल्डर के बजाय निम्नलिखित कमांड का उपयोग कर सकते हैं

$ git config --global credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>

9

जब मैं केवल git पुल it git पुल उत्पत्ति मूल xxx asks git उपयोगकर्ता नाम और पासवर्ड दोनों के लिए पूछता हूं।

git config credential.helper store

यह काम करता हैं।


9

सबसे आसान तरीका है ~/.netrcकि निम्नलिखित सामग्री के साथ एक फ़ाइल बनाएं :

machine github.com
login YOUR_GITHUB_USERNAME
password YOUR_GITHUB_PASSWORD

(जैसा कि यहां दिखाया गया है: https://gist.github.com/ahoward/2885020 )

आप इस फ़ाइल पर अनुमतियाँ भी बंद कर सकते हैं ताकि कोई भी आपके पासवर्ड को टाइप करके न पढ़ सके:

chmod 600 ~/.netrc

6

यदि आप SSH संस्करण का उपयोग करते हैं , तो आपको पासवर्ड के साथ कोई समस्या नहीं होगी। एक बार जब आप SSH कुंजी जनरेट करते हैं , git को बताने के लिए, कि यह पीसी इस github खाते के साथ काम करेगा और मुझसे कभी भी किसी भी एक्सेस (इस पीसी के लिए) के बारे में नहीं पूछेगा।

कैसे Github के लिए SSH उत्पन्न करने के लिए


4

उपयोगकर्ता नाम दर्ज करने से बचने के लिए, लेकिन फिर भी पासवर्ड दर्ज करने के लिए कहा जाए, तो आप उपयोगकर्ता नाम सहित अपने भंडार को क्लोन कर सकते हैं:

git clone user_name@example.gitrepo.com/my_repo.git


3

ssh+ key authenticationकी तुलना में अधिक विश्वसनीय तरीका है https+credential.helper

आप सभी रिपॉजिटरी के लिए HTTPS के बजाय SSH का उपयोग करने के लिए कॉन्फ़िगर कर सकते हैं:

git config --global url.ssh://git@github.com/.insteadOf https://github.com/

url.<base>.insteadOfयहाँ प्रलेखित है


2

त्वरित विधि

अपने git का url प्राप्त करें जब अंदर काम कर रहे dir:

git config remote.origin.url

फिर :

git config credential.helper store

git push "url of your git"

उपयोगकर्ता नाम और पासवर्ड को एक बार पूछेगा

किया हुआ।


1

आप बस चला सकते हैं

git config --global credential.helper wincred

आपके सिस्टम में विंडोज़ के लिए GIT में स्थापित और लॉग इन करने के बाद।


DId क्वेरी में linux शब्द नहीं देखें। मेरा बुरा
साइपरपंक

1

(केवल मैक ओएस के लिए)

के लिए विंडोज और लिनक्स Github के दस्तावेज़ लिंक नीचे उल्लेख को देखें।

जीथब डॉक्यूमेंटेशन से: डॉक्यूमेंटेशन लिंक

Git में अपना GitHub पासवर्ड कैशिंग करें

  • ओएसएक्सचेकिन क्रेडेंशियल हेल्पर का उपयोग करने के लिए आपको 1.7.10 या नए की आवश्यकता है।

    अपने Git संस्करण की जाँच करने के लिए: git --version

  • यह पता लगाने के लिए कि ऑक्सज़ैकैचिन हेल्पर पहले से स्थापित है:

    git credential-osxkeychain

    यदि आपको निम्न प्रतिक्रिया मिलती है, तो आपके पास पहले से ही स्थापित है और आपके मैक पर उपयोग करने के लिए तैयार है:

    > Usage: git credential-osxkeychain <get|store|erase>

    यदि आपको कोई प्रतिक्रिया नहीं मिलती है जैसा कि ऊपर दिखाया गया है तो आप इसे निम्नलिखित कमांड को चलाकर स्थापित कर सकते हैं:

    git credential-osxkeychain

  • गिट क्रेडेंशियल्स के लिए वैश्विक रूप से ऑक्सकीचिन का उपयोग करने के लिए गिट को बताने के लिए:

    git config --global credential.helper osxkeychain

    यह चाबी का गुच्छा से साख बचाने से पहले एक बार संकेत देगा ।

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