TLDR; Git 1.8.3+ के साथ एन्क्रिप्टेड netrc फ़ाइल का उपयोग करें ।
Git रिपॉजिटरी HTTPS URL के लिए पासवर्ड सेव करना Windows पर ~/.netrc(Unix) या %HOME%/_netrc(नोट करें _) के साथ संभव है ।
लेकिन : वह फ़ाइल आपके पासवर्ड को सादे पाठ में संग्रहीत करेगी।
समाधान : उस फ़ाइल को GPG (GNU गोपनीयता गार्ड) के साथ एन्क्रिप्ट करें , और Git को डिक्रिप्ट करें इसे हर बार पासवर्ड ( push/ pull/ fetch/ cloneसंचालन के लिए) की आवश्यकता होती है।
नोट: Git 2.18 (Q2 2018) के साथ, अब आप एन्क्रिप्टेड .netrcफ़ाइल को डिक्रिप्ट करने के लिए उपयोग किए जाने वाले GPG को कस्टमाइज़ कर सकते हैं ।
देखें प्रतिबद्ध 786ef50 , f07eeed प्रतिबद्ध द्वारा (12 मई 2018) लुइस Marsano ( ``) ।
(द्वारा विलय Junio सी Hamano - gitster- में प्रतिबद्ध 017b7c5 , 30 मई 2018)
git-credential-netrc: gpgविकल्प स्वीकार करें
git-credential-netrcgpggpg.program विकल्प की परवाह किए बिना ' ' के साथ डिक्रिप्ट करने के लिए हार्डकोड किया गया था ।
यह डिबियन जैसे वितरण पर एक समस्या है जो आधुनिक GnuPG को कुछ और कहते हैं, जैसे ' gpg2'
विंडोज के लिए चरण-दर-चरण निर्देश
विंडोज के साथ:
(Git के gpg.exeवितरण में एक है, लेकिन पूर्ण GPG संस्थापन का उपयोग करने में एक शामिल है gpg-agent.exe, जो आपकी GPG कुंजी से संबंधित आपके पासफ़्रेज़ को याद रखेगा।)
(ध्यान दें ' copy' कमांड: Git आदेश पर अमल करने के लिए एक बैश स्क्रिप्ट की आवश्यकता होगी ' gpg' के बाद से। gpg4win-vanilla-2के साथ आता है gpg2.exe, तो आप इसे नकल करने की जरूरत है।)
(उस कुंजी को पासफ़्रेज़ रखना सुनिश्चित करें।)
उस चाबी पर भरोसा रखो
अपने भीतर एक निर्देशिका में क्रेडेंशियल सहायक स्क्रिप्ट स्थापित करें %PATH%:
cd c:\a\fodler\in\your\path
curl -o c:\prgs\bin\git-credential-netrc https://raw.githubusercontent.com/git/git/master/contrib/credential/netrc/git-credential-netrc.perl
(खबरदार: स्क्रिप्ट का नाम बदलकर Git 2.25.x / 2.26 रखा गया है, नीचे देखें)
(हां, यह एक बैश स्क्रिप्ट है, लेकिन यह विंडोज पर काम करेगा क्योंकि इसे गिट द्वारा बुलाया जाएगा।)
( आपके द्वारा उपयोग किए जाने वाले URL के आधार पर ' protocol' भाग: ' http' या ' https' को न भूलें ।)
(अब आप कर सकते हैं हटाना_netrc ही रखने फ़ाइल, _netrc.gpgएन्क्रिप्टेड है।)
(नोट ' /': C:\path\to...बिल्कुल काम नहीं करेगा।) (आप पहली बार में उपयोग कर सकते हैं-v -d देख सकते हैं कि क्या चल रहा है।)
अब से, HTTP (S) URL का उपयोग करने वाले किसी भी Git कमांड को प्रमाणीकरण की आवश्यकता होती है जो उस _netrc.gpgफ़ाइल को डिक्रिप्ट करेगा और जिस सर्वर से आप संपर्क कर रहे हैं उससे जुड़े लॉगिन / पासवर्ड का उपयोग करें। पहली बार, GPG आपसे फ़ाइल को डिक्रिप्ट करने के लिए आपकी GPG कुंजी के पासफ़्रेज़ के लिए कहेगा। दूसरी बार, gpg-agent ने स्वतः लॉन्च किया पहले GPG कॉल द्वारा से आपके लिए वह पासफ़्रेज़ प्रदान करेगा।
इस तरह, आप एक फ़ाइल में कई यूआरएल / लॉगिन / पासवर्ड याद कर सकते हैं, और यह आपके डिस्क पर एन्क्रिप्टेड संग्रहीत है।
मुझे यह "कैश" सहायक की तुलना में अधिक सुविधाजनक लगता है, जहां आपको याद रखने की आवश्यकता होती है और आपकी प्रत्येक दूरस्थ सेवाओं के लिए एक अलग पासवर्ड टाइप करने के लिए (एक बार प्रति पासवर्ड) मेमोरी में कैश्ड होने के लिए कहा जाता है।
Git 2.26 (Q1 2020) के साथ, उपयोग करने के लिए नमूना क्रेडेंशियल सहायक .netrcबॉक्स से बाहर काम करने के लिए अद्यतन किया गया है। पैच / चर्चा देखें ।
Denton लियू ( ) द्वारा 6579d93 , 1c78c78 (20 दिसंबर 2019) के लिए प्रतिबद्ध देखें । (द्वारा विलय Junio सी Hamano - - में प्रतिबद्ध 1fd27f8 , 25 दिसंबर 2019)Denton-L
gitster
साइन-ऑफ-बाय: डेंटन लियू
पर्ल दुभाषिया के लिए शबंग मार्ग git-credential-netrcहार्डकोड किया गया था।
हालाँकि, कुछ उपयोगकर्ताओं को यह एक अलग स्थान पर स्थित हो सकता है और इस प्रकार, स्क्रिप्ट को मैन्युअल रूप से संपादित करना होगा।
.perlइसे टेम्पलेट के रूप में दर्शाने के लिए स्क्रिप्ट में एक उपसर्ग जोड़ें और उत्पन्न संस्करण को अनदेखा करें।
में वृद्धि Makefileइतना है कि यह उत्पन्न करता है git-credential-netrcसेgit-credential-netrc.perl अन्य पर्ल लिपियों की तरह ।
Makefile व्यंजनों को बेशर्मी से चुराया गया था contrib/mw-to-git/Makefile।
तथा:
2.26 (Q1 2020) के साथ, .netrc का उपयोग करने के लिए नमूना क्रेडेंशियल सहायक बॉक्स से बाहर काम करने के लिए अद्यतन किया गया है।
Denton लियू ( ) द्वारा 6579d93 , 1c78c78 (20 दिसंबर 2019) के लिए प्रतिबद्ध देखें । (द्वारा विलय Junio सी Hamano - - में प्रतिबद्ध 1fd27f8 , 25 दिसंबर 2019)Denton-L
gitster
साइन-ऑफ-बाय: डेंटन लियू
वर्तमान में, git-credential-netrcगिट रिपॉजिटरी के बाहर काम नहीं करता है। यह निम्न त्रुटि के साथ विफल रहता है:
fatal: Not a git repository: . at /usr/share/perl5/Git.pm line 214.
हालांकि, एक रिपॉजिटरी के भीतर होने की कोई वास्तविक वजह नहीं है। क्रेडेंशियल हेल्पर्स को रिपॉजिटरी के बाहर भी ठीक काम करने में सक्षम होना चाहिए।
गैर-स्व-संस्करण को कॉल करें config()ताकि git-credential-netrcअब रिपॉजिटरी के भीतर चलने की आवश्यकता न हो।
जेफ किंग ( peff) कहते हैं:
मुझे लगता है कि आप एक gpg-एन्क्रिप्टेड का उपयोग कर रहे हैं netrc(यदि नहीं, तो आपको शायद बस उपयोग करना चाहिए credential-store)।
"केवल पढ़ने के लिए" पासवर्ड के उपयोग के लिए, मुझे लगता है कि passयह थोड़ा अच्छा है
[credential "https://github.com"]
username = peff
helper = "!f() { test $1 = get && echo password=`pass github/oauth`; }; f"